一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

UCOSIII任務(wù)管理I

 鹵煮小魚 2017-06-13

基于stm32代碼講解
本文
第一部分:涉及移植后stm32工程中delay.c,usart.c,sys.c 3個(gè)源文件中重要的函數(shù)說明
第二部分:講解ucos任務(wù)管理的基本概念和相關(guān)代碼幫助理解,包括-1.任務(wù)的組成部分
2.系統(tǒng)任務(wù) 3.任務(wù)狀態(tài) 4.任務(wù)狀態(tài)的切換
第三部分:進(jìn)行總結(jié)歸納和反思


第一部分

1-delay.c

采用滴答定時(shí)器(硬件定時(shí)器)作為UCOS的基準(zhǔn)時(shí)間

在m3,m4中代碼完全一樣。在m4權(quán)威指南中NVIC和中斷一章中Systick有詳細(xì)講解滴答定時(shí)器

void SysTick_Handler(void)
{   
    if(delay_osrunning==1) //操作系統(tǒng)正常運(yùn)行后執(zhí)行            
    {
        OSIntEnter();       //進(jìn)入中斷
        OSTimeTick();       //調(diào)用ucos中斷服務(wù)函數(shù)        
        OSIntExit();        //觸發(fā)任務(wù)切換軟中斷(進(jìn)入就緒態(tài))
    }
}
  • delay_init,初始化了ucos的時(shí)鐘節(jié)拍
  • delay_ms在<=最小周期的時(shí)候使用原本的函數(shù)-不會(huì)引起任務(wù)調(diào)度,在大于的時(shí)候使用ucos自帶的函數(shù)-會(huì)引起任務(wù)調(diào)度
  • delay_us不會(huì)引起任務(wù)調(diào)度

2-usart.c

  • 在中斷中要使用ucos特定的中斷進(jìn)入和退出函數(shù)
void USART1_IRQHandler(void)                    
{
    u8 Res;
#if SYSTEM_SUPPORT_OS  
    OSIntEnter();       //使用ucos操作系統(tǒng)
#endif
    ....................//自定義的中斷處理
#if SYSTEM_SUPPORT_OS  
    OSIntExit();        //退出中斷(調(diào)度優(yōu)先級(jí)最高的任務(wù))
#endif
} 

3-sys.c 完全不變


第二部分

1-任務(wù)的組成

  • 任務(wù)堆棧:上下文切換用于保存任務(wù)當(dāng)前環(huán)境。也就是stm32內(nèi)部寄存器的值。
  • 任務(wù)控制塊:保存任務(wù)的各個(gè)屬性
  • 任務(wù)函數(shù):完成指定功能

1-1三大組成使用部分代碼講解

如下定義了3個(gè)組成部分,進(jìn)行相關(guān)定義后即可以作為參數(shù)調(diào)用OSTaskCreate(…)開啟相應(yīng)任務(wù)

//任務(wù)優(yōu)先級(jí)
#define TASK1_TASK_PRIO     4
//任務(wù)堆棧大小    
#define TASK1_STK_SIZE      128
//任務(wù)控制塊
OS_TCB Task1_TaskTCB;
//任務(wù)函數(shù)
CPU_STK TASK1_TASK_STK[TASK1_STK_SIZE];
void task1_task(void *p_arg);

某個(gè)任務(wù)代碼,調(diào)用OSTimeDlyHMSM是使用任務(wù)切換的關(guān)鍵

void XXX_task(void *p_arg)
{
    while(1)
   {
     ...//任務(wù)處理過程
     OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&err); //延時(shí)一秒
   }
}

創(chuàng)建任務(wù)代碼

//創(chuàng)建task1任務(wù)
    OSTaskCreate((OS_TCB    * )&Task1_TaskTCB,  //任務(wù)控制塊 
                 (CPU_CHAR  * )"Task1 task",        
                 (OS_TASK_PTR )task1_task,      //使用任務(wù)函數(shù)        
                 (void      * )0,                   
                 (OS_PRIO     )TASK1_TASK_PRIO, //任務(wù)優(yōu)先級(jí)    
                 (CPU_STK   * )&TASK1_TASK_STK[0],//任務(wù)堆棧    
                 (CPU_STK_SIZE)TASK1_STK_SIZE/10,   
                 (CPU_STK_SIZE)TASK1_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);               

2-系統(tǒng)任務(wù)

UCOSIII默認(rèn)有5個(gè)系統(tǒng)任務(wù):

1、空閑任務(wù):UCOSIII創(chuàng)建的第一個(gè)任務(wù),UCOSIII必須創(chuàng)建的任務(wù),此任務(wù)有UCOSIII自動(dòng)創(chuàng)建,不需要用戶手動(dòng)創(chuàng)建。
2、時(shí)鐘節(jié)拍任務(wù):此任務(wù)也是必須創(chuàng)建的任務(wù)。
3、統(tǒng)計(jì)任務(wù):可選任務(wù),用來統(tǒng)計(jì)CPU使用率和各個(gè)任務(wù)的堆棧使用量。此任務(wù)是可選任務(wù),由宏OS_CFG_STAT_TASK_EN控制是否使用此任務(wù)。
4、定時(shí)任務(wù):用來向用戶提供定時(shí)服務(wù),也是可選任務(wù),由宏OS_CFG_TMR_EN控制是否使用此任務(wù)。
5、中斷服務(wù)管理任務(wù):可選任務(wù),由宏OS_CFG_ISR_POST_DEFERRED_EN控制是否使用此任務(wù)。

3-任務(wù)狀態(tài)

從用戶的角度看,UCOSIII的任務(wù)一共有5種狀態(tài):

1、休眠態(tài):任務(wù)已經(jīng)在CPU的flash中了,但是還不受UCOSIII管理。
2、就緒態(tài):系統(tǒng)為任務(wù)分配了任務(wù)控制塊,并且任務(wù)已經(jīng)在就緒表中登記,這時(shí)這個(gè)任務(wù)就具有了運(yùn)行的條件,此時(shí)任務(wù)的狀態(tài)就是就緒態(tài)。
3、運(yùn)行態(tài):任務(wù)獲得CPU的使用權(quán),正在運(yùn)行。
4、等待態(tài):正在運(yùn)行的任務(wù)需要等待一段時(shí)間,或者等待某個(gè)事件,這個(gè)任務(wù)就進(jìn)入了等待態(tài),此時(shí)系統(tǒng)就會(huì)把CPU使用權(quán)轉(zhuǎn)交給別的任務(wù)。
5、中斷服務(wù)態(tài):當(dāng)發(fā)送中斷,當(dāng)前正在運(yùn)行的任務(wù)會(huì)被掛起,CPU轉(zhuǎn)而去執(zhí)行中斷服務(wù)函數(shù),此時(shí)任務(wù)的任務(wù)狀態(tài)叫做中斷服務(wù)態(tài)。

Summary and Question

1-delay,usart中需要注意的地方?

  • delay.c中選取了滴答定時(shí)器作為ucosIII的時(shí)間基準(zhǔn)
  • usart中中斷服務(wù)函數(shù)需要ucos進(jìn)入和退出中斷函數(shù)

2-任務(wù)的三大組成是什么?

3-系統(tǒng)任務(wù)有哪些?

3-任務(wù)狀態(tài)有幾種?

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多

    午夜国产精品福利在线观看| 欧美精品亚洲精品日韩专区| 日韩三级黄色大片免费观看| 一区二区三区国产日韩| 亚洲午夜福利不卡片在线| 日韩中文字幕欧美亚洲| 国产成人亚洲精品青草天美| 在线观看日韩欧美综合黄片| 色婷婷国产熟妇人妻露脸| 精品国产av一区二区三区不卡蜜 | 丝袜诱惑一区二区三区| 爽到高潮嗷嗷叫之在现观看| 嫩呦国产一区二区三区av| 久久精品一区二区少妇| 日韩精品在线观看完整版| 亚洲国产av一二三区| 国产女性精品一区二区三区 | 欧美日韩久久精品一区二区| 91偷拍视频久久精品| 亚洲一区二区三区av高清| 91精品国产av一区二区| 亚洲一区二区三区四区| 日韩人妻有码一区二区| 久久精品国产亚洲av麻豆| 九九热视频经典在线观看| 亚洲视频在线观看你懂的| 日本特黄特色大片免费观看| 国产精品视频一区麻豆专区| 尹人大香蕉一级片免费看| 草草夜色精品国产噜噜竹菊| 人妻亚洲一区二区三区| 久久久免费精品人妻一区二区三区| 精品视频一区二区三区不卡| 国产av熟女一区二区三区四区| 精品国产亚洲一区二区三区| 国产日产欧美精品大秀| 中文字幕高清不卡一区| 国产精品成人免费精品自在线观看 | 亚洲伊人久久精品国产| 夫妻性生活动态图视频| 亚洲一区二区三区免费的视频|