找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7987|回復(fù): 12
收起左側(cè)

51單片機(jī)簡(jiǎn)單多任務(wù)調(diào)度實(shí)現(xiàn)代碼

  [復(fù)制鏈接]
ID:61002 發(fā)表于 2017-7-18 10:52 | 顯示全部樓層 |閱讀模式
  1. //注意
  2. //任務(wù)優(yōu)先級(jí)必須小于任務(wù)個(gè)數(shù),不然會(huì)死機(jī)
  3. //任務(wù)優(yōu)先級(jí)并非真實(shí)的,高有限級(jí)的任務(wù)不會(huì)打斷低優(yōu)先級(jí)的任務(wù)
  4. //只是當(dāng)2個(gè)任務(wù)執(zhí)行的時(shí)間到了,高優(yōu)先級(jí)的任務(wù)會(huì)優(yōu)先執(zhí)行
  5. //任務(wù)的優(yōu)先級(jí)同時(shí)也是任務(wù)的句柄,任務(wù)創(chuàng)建和使能的時(shí)候會(huì)用到
  6. //任務(wù)無(wú)法刪除,可以通過(guò)失能,失任務(wù)不執(zhí)行
  7. #define Rtos_Num 5//任務(wù)個(gè)數(shù)  

  8. //簡(jiǎn)單任務(wù)調(diào)度
  9. typedef struct{
  10.         void (*fTask)(void);//任務(wù)指針
  11.         uint8_t  runFlag;//運(yùn)行標(biāo)志位  1使能  0失能
  12.         uint16_t  uLenTick;//任務(wù)調(diào)度周期
  13.         uint32_t  uNextTick;//下次執(zhí)行時(shí)間
  14. }sTask;

  15. //        extern uint32_t Rtos_SysTim; //系統(tǒng)時(shí)間   一般是1ms定時(shí)器
  16. //創(chuàng)建任務(wù)
  17. void Rtos_Creat(void *Task_Name,uint8_t Priority,uint8_t enable,uint32_t starttim,uint16_t tim);
  18. //任務(wù)使能
  19. void Rtos_En(uint8_t Priority,uint8_t enable);
  20. //開(kāi)始執(zhí)行任務(wù)
  21. void Rtos_Run(void);
復(fù)制代碼


簡(jiǎn)易任務(wù)調(diào)度.rar

39.22 KB, 下載次數(shù): 116, 下載積分: 黑幣 -5

任務(wù)調(diào)度

評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:61002 發(fā)表于 2017-7-18 10:55 | 顯示全部樓層
貼出了所有的代碼,但是只顯示了一部分
回復(fù)

使用道具 舉報(bào)

ID:61002 發(fā)表于 2017-7-18 10:55 | 顯示全部樓層
  1. /創(chuàng)建任務(wù)
  2. //任務(wù)名稱 任務(wù)優(yōu)先級(jí)  使能    開(kāi)始時(shí)間    周期  
  3. void Rtos_Creat(void *Task_Name,uint8_t Priority,uint8_t enable,uint32_t starttim,uint16_t tim)
  4. {
  5.         if(Priority>=Rtos_Num)
  6.         {
  7.                 while(1)
  8.                 {
  9.                         //可做其他處理
  10.                         printf("任務(wù)出錯(cuò)");               
  11.                 }
  12.         }
  13.         mTaskTab[Priority].fTask=(void(*)(void))Task_Name;//函數(shù)名
  14.         mTaskTab[Priority].runFlag =enable;//使能
  15.         mTaskTab[Priority].uNextTick=starttim;//任務(wù)開(kāi)始執(zhí)行的時(shí)間
  16.         mTaskTab[Priority].uLenTick=tim;//任務(wù)開(kāi)始執(zhí)行的時(shí)間
  17. }
  18. //任務(wù)使能  失能
  19. //任務(wù)優(yōu)先級(jí)   使能
  20. void Rtos_En(uint8_t Priority,uint8_t enable)
  21. {
  22.         if(Priority>=Rtos_Num)
  23.         {
  24.                 while(1)
  25.                 {
  26.                         //可做其他處理
  27.                         printf("任務(wù)出錯(cuò)");               
  28.                 }
  29.         }
  30.         mTaskTab[Priority].runFlag =enable;//使能
  31. }
  32. //開(kāi)始調(diào)度
  33. void Rtos_Run(void)
  34. {
  35.         while(1)
  36.         {
  37.                 for (uint8_t  i = 0; i < (sizeof (mTaskTab)/sizeof(sTask)); i++)
  38.                 {
  39.                         if ((mTaskTab[i].uNextTick <= Rtos_SysTim)&&(mTaskTab[i].runFlag==1))
  40.                         {
  41.                                         mTaskTab[i].uNextTick += mTaskTab[i].uLenTick;
  42.                                         mTaskTab[i].fTask();        
  43.                         }
  44.                 }
  45.         }
  46. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:221865 發(fā)表于 2017-7-23 21:26 | 顯示全部樓層
黑幣不夠啊
回復(fù)

使用道具 舉報(bào)

ID:66287 發(fā)表于 2018-2-13 10:27 | 顯示全部樓層
很不錯(cuò),謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:20672 發(fā)表于 2018-7-22 09:09 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:20672 發(fā)表于 2018-7-24 20:46 | 顯示全部樓層
謝謝分享!
回復(fù)

使用道具 舉報(bào)

ID:93883 發(fā)表于 2019-1-15 17:43 | 顯示全部樓層
謝謝分享,剛剛?cè)腴T(mén)51
回復(fù)

使用道具 舉報(bào)

ID:468821 發(fā)表于 2019-1-15 21:28 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:486325 發(fā)表于 2019-3-7 15:55 | 顯示全部樓層
代碼看不全啊,有沒(méi)有完整的代碼,謝謝
回復(fù)

使用道具 舉報(bào)

ID:341228 發(fā)表于 2022-2-25 10:19 | 顯示全部樓層
別下載了  里面沒(méi)東西  就帖子里面貼出來(lái)的那一點(diǎn)點(diǎn)代碼
回復(fù)

使用道具 舉報(bào)

ID:920224 發(fā)表于 2022-3-28 02:41 | 顯示全部樓層
謝謝分享,看了一下,感覺(jué)還有一點(diǎn)地方可以優(yōu)化一下
回復(fù)

使用道具 舉報(bào)

ID:46943 發(fā)表于 2022-4-22 17:03 | 顯示全部樓層
我是來(lái)學(xué)習(xí)的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表