娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年04月25日(星期五)

2019年04月25日 | UCOSIII任務創建、刪除、掛起和恢復

發布者:SereneWanderer 來源: eefocus關鍵字:UCOSIII  任務創建  刪除  掛起  恢復 手機看文章 掃描二維碼
隨時隨地手機看文章

一、任務的創建


任務創建函數:OSTaskCreate()


void  OSTaskCreate (  OS_TCB          *p_tcb,//指向任務的任務控制塊

                                      CPU_CHAR      *p_name,//任務名字

                                  OS_TASK_PTR    p_task,//任務函數名字

                                  void              *p_arg,//傳遞給任務的參數

                                  OS_PRIO        prio,//任務優先級

                                  CPU_STK         *p_stk_base,//任務堆棧基地址

                                  CPU_STK_SIZE   stk_limit,//任務堆棧深度

                                  CPU_STK_SIZE   stk_size,//任務堆棧大小

                                  OS_MSG_QTY     q_size,//可選消息隊列

                                  OS_TICK        time_quanta,//使能時間片輪轉調度,默認時鐘節拍除以10

                                  void              *p_ext,//指向用戶補充的存儲區

                                  OS_OPT                opt,//任務的特定選項

                                  OS_ERR          *p_err)//保存錯誤碼

①首先要定義每個任務的優先級、棧大小、任務控制塊及堆棧


//任務優先級


#define START_TASK_PRIO         3


//任務堆棧大小    


#define START_STK_SIZE           512


//任務控制塊


OS_TCB StartTaskTCB;


//任務堆棧    


CPU_STK START_TASK_STK[START_STK_SIZE];


//任務函數 申明


void start_task(void *p_arg);


②編寫主函數,首先是外部功能函數的初始化,然后初始化UCOSIII,再創建開始任務(在創建開始任務之前必須調用進入臨界區函數,創建完后還要退出臨界區,然后開啟UCOIII),創建開始任務的傳參既是自己宏定義的一些參數。


int main(void)

 

{

       OS_ERR err;//錯誤值:都是宏定義,根據對應數值找到返回錯誤值代表的意思

       CPU_SR_ALLOC();

       delay_init(168);    //時鐘初始化

 

       NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中斷分組配置

       uart_init(115200);  //串口初始化

       LED_Init();         //LED初始化

 

       OSInit(&err);         //初始化UCOSIII

       OS_CRITICAL_ENTER();//進入臨界區

       //創建開始任務

       OSTaskCreate((OS_TCB       * )&StartTaskTCB,         //任務控制塊

                             (CPU_CHAR * )"start task",              //任務名字

                 (OS_TASK_PTR )start_task,                      //任務函數

                 (void            * )0,                             //傳遞給任務函數的參數

                 (OS_PRIO       )START_TASK_PRIO,     //任務優先級

                 (CPU_STK   * )&START_TASK_STK[0],     //任務堆棧基地址

                 (CPU_STK_SIZE)START_STK_SIZE/10, //任務堆棧深度限位

                 (CPU_STK_SIZE)START_STK_SIZE,             //任務堆棧大小

                 (OS_MSG_QTY  )0,                                //任務內部消息隊列能夠接收的最大消息數目,為0時禁止接收消息

                 (OS_TICK        )0,                                   //當使能時間片輪轉時的時間片長度,為0時為默認長度,

                 (void          * )0,                             //用戶補充的存儲區

                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任務選項

                 (OS_ERR      * )&err);                       //存放該函數錯誤時的返回值

       OS_CRITICAL_EXIT();     //退出臨界區

       OSStart(&err);  //開啟UCOSIII

       while(1);

}

③主函數調用創建開始任務函數后就應編寫開始任務函數的功能函數,開始任務函數內同樣是調用功能函數,原理同上,接著寫功能函數所要實現的功能。


//開始任務函數

void start_task(void *p_arg)

{

       OS_ERR err;

       CPU_SR_ALLOC();

       p_arg = p_arg;

 

       CPU_Init();

#if OS_CFG_STAT_TASK_EN > 0u

   OSStatTaskCPUUsageInit(&err);  //統計任務               

#endif

      

#ifdef CPU_CFG_INT_DIS_MEAS_EN          //如果使能了測量中斷關閉時間

    CPU_IntDisMeasMaxCurReset(); 

#endif

 

#if   OS_CFG_SCHED_ROUND_ROBIN_EN  //當使用時間片輪轉的時候

        //使能時間片輪轉調度功能,時間片長度為1個系統時鐘節拍,既1*5=5ms

       OSSchedRoundRobinCfg(DEF_ENABLED,1,&err); 

#endif                 

 

       OS_CRITICAL_ENTER(); //進入臨界區

       //創建LED0任務

       OSTaskCreate((OS_TCB       * )&Led0TaskTCB,       

                             (CPU_CHAR * )"led0 task",             

                 (OS_TASK_PTR )led0_task,                     

                 (void            * )0,                            

                 (OS_PRIO       )LED0_TASK_PRIO,    

                 (CPU_STK   * )&LED0_TASK_STK[0],      

                 (CPU_STK_SIZE)LED0_STK_SIZE/10,  

                 (CPU_STK_SIZE)LED0_STK_SIZE,       

                 (OS_MSG_QTY  )0,                               

                 (OS_TICK        )0,                                  

                 (void          * )0,                            

                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,

                 (OS_ERR      * )&err);                                                  

       //創建LED1任務

       OSTaskCreate((OS_TCB       * )&Led1TaskTCB,       

                             (CPU_CHAR * )"led1 task",             

                 (OS_TASK_PTR )led1_task,                     

                 (void            * )0,                            

                 (OS_PRIO       )LED1_TASK_PRIO,      

                 (CPU_STK   * )&LED1_TASK_STK[0],      

                 (CPU_STK_SIZE)LED1_STK_SIZE/10,  

[1] [2]
關鍵字:UCOSIII  任務創建  刪除  掛起  恢復 引用地址:UCOSIII任務創建、刪除、掛起和恢復

上一篇:UCOSIII時間片輪轉調度器
下一篇:UCOIII中任務的調度和切換

推薦閱讀

“模塊化”是室內設計的熱門詞匯,如今這種理念已滲透到許多家居元素,如模塊化儲物箱、模塊化床,模塊化廚房以及今天要介紹的這款模塊化冰箱。Heewoong Chai設計了這款名為AddiTIon的全新家電。這是一套多功能冰箱系統,可根據使用者需要任意組合并調整尺寸,可以隨需求的增加而不斷擴充。另外,這款冰箱具備雙向鉸鏈,可以輕松改變向左或向右開門方向,...
特斯拉在美國總部舉辦了面向投資人的“Tesla Autonomy Day”,發布了完全自動駕駛Hardware 3.0硬件(主要是講FSD芯片),并且發布了2020年自動駕駛出租車(RoboTaxi)計劃。 完全自動駕駛(Full self-driving,FSD)芯片,是這次發布會的重頭戲,核心信息:14nm,144TOPS,250W/mile,2300FPS,運算能力極其強悍,還和英偉達Xavier進行對比,引發英...
根據《2018 年中國制造業痛點分析報告》數據顯示,制造業企業的數字化設備聯網率僅為 39%,面向制造企業車間執行層的生產信息化管理系統普及率只有 18.1%。 “新基建”范圍正式明確 國家發展和改革委員會召開新聞發布會,會上首次明確了“新基建”的范圍。 國家發改委創新和高技術發展司司長伍浩稱,經初步研究認為,新型基礎設施是以新發展理念為引領...
工業過程需要對執行器進行精準而穩健的控制,以便管理流量、溫度和壓力等過程參數。精密模擬輸出模塊,即所謂可編程邏輯控制器(PLC)或分布式控制系統(DCS),可產生用于控制此類執行器的電壓或電流輸出。這些模塊需要在惡劣的工業環境中提供穩定、可靠、精確的輸出。ADI公司的單通道16位I/V輸出DACAD5423和過壓保護SPST開關ADG5401F的組合,符合此類控制需...

史海拾趣

問答坊 | AI 解惑

怎樣選擇一款合適的晶體振蕩器

本文介紹了一些足以表現出一個晶體振蕩器性能高低的技術指標,了解這些指標的含義,將有助于通訊設計工程師順利完成設計項目,同時也可以大大減少整機生產廠家的采購成本。 …

查看全部問答∨

自走式機器人避障

自走式機器人避障…

查看全部問答∨

FPGA設計的一點體會

多年的FPGA設計,感覺FPGA設計關鍵掌握通用語言描述模型,理解硬件描素語言。然后對應用深刻的理解,并轉化為工程實現的語言。由于FPGA的靈活性和其并行運行的特點。個人認為FPGA以后發展可能完全取代其他各類芯片。…

查看全部問答∨

請教 怎么對地址總線的某一位賦值???

我的硬件是PXA270 通過16位數據總線連接到64MBYTE的FLASH P33,地址總線是26位 p33是由兩塊32M的flash組成的,在程序中不能同時訪問上下兩塊FLASH的地址 而是需要有一個地址總線,即最高位的A25作為內部片選,選擇當前訪問的是BOTTOM 還是top flas ...…

查看全部問答∨

DSP+BCM5221 網絡連接問題

我用的TI的DM642DSP和BCM5221以太網芯片,進行連網 采用UDP協議,報文頭: typedef union {         Uint8 Bytes[6];         Uint16 Words[3]; }MacAddr; // Ethernet Header #define ETHHDR_SIZE&nbs ...…

查看全部問答∨

wince編譯的問題

wince編譯時,點擊sysgen后但是沒通過,出現在BSP里面有個錯誤,是不是得重新SYSGEN還是只需build出錯的代碼然后再make就可以了呀?…

查看全部問答∨

有關LED 調光,你了解多少?

      在照明行業,人們對于LED光源的調光往往有個誤區,即認為對比其他光源(熒光燈,金鹵燈和鈉燈等)的調光LED相對容易的多。而現實是LED光源調光技術在工程中的應用中往往不盡人意,為什么會是這樣的情形?是LED光源的調光 ...…

查看全部問答∨

哪些手段確保FPGA外部芯片提供的數據準確無誤地進入FPGA內部?

通常采用哪些手段確保FPGA外部芯片(比如ad芯片,存儲器讀數據時)提供的數據準確無誤地進入FPGA內部? \0\0\0eeworldpostqq…

查看全部問答∨

“芯靈思”免費送開發板活動第三期(9.15~9.21)及第二期中獎結果公布!!

本帖最后由 芯靈思 于 2014-9-14 23:41 編輯 “芯靈思”攜手“EEWorld”開展免費送開發板活動,于2014年9月1號開始,每周評獎一次,停止時間另行通知。趕緊喊你的小伙伴一起上!!人多機會大!!1、活動周期:每周評獎一次 (本期:9月15日00:00~9月 ...…

查看全部問答∨

貼片瓷片電容問題

    大家好,最近生產一批產品用到三星的4.7uF和1uF的0603瓷片電容,這批產品在通電老化后都出現不良現象,測量發現是這兩個電容漏電導致影響了電容兩端的電壓,更換同樣品牌同樣參數的電容后再老化一批沒有出現問題了。因為這個產品這兩 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 科技| 宁河县| 吴江市| 丰台区| 沁水县| 威信县| 山东省| 利辛县| 弥渡县| 集贤县| 广汉市| 游戏| 冷水江市| 石景山区| 阜阳市| 新乐市| 江源县| 察雅县| 盘锦市| 云阳县| 方山县| 嘉定区| 江陵县| 封开县| 麻栗坡县| 凌海市| 新巴尔虎右旗| 元朗区| 绍兴市| 凤凰县| 黄冈市| 石门县| 东兰县| 大姚县| 泾源县| 黔南| 沧州市| 凌海市| 大港区| 米易县| 新乡市|