久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1618|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

發(fā)個(gè)STM32F103單片機(jī)8任務(wù)RTX例程,帶Proteus仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主


單片機(jī)源程序如下:
  1. #include "includes.h" /* 底層硬件驅(qū)動(dòng) */
  2. #include "usart.h"
  3. /*
  4. **********************************************************************************************************
  5. 函數(shù)聲明
  6. **********************************************************************************************************
  7. */


  8. static void AppTaskCreate (void);
  9. __task void AppTaskLED(void);
  10. __task void AppTaskStart(void);
  11. /*
  12. 安 富 萊 電 子
  13. **********************************************************************************************************
  14. 變量
  15. **********************************************************************************************************
  16. os_sem_init
  17. os_sem_send
  18. isr_sem_send
  19. os_sem_wait
  20. */
  21. static uint64_t AppTaskLEDStk[256/8]; /* 任務(wù)棧 */
  22. static uint64_t AppTaskStartStk[512/8]; /* 任務(wù)棧 */
  23. /* 任務(wù)句柄 */
  24. OS_TID HandleTaskLED = NULL;
  25. /* 任務(wù)句柄 */
  26. OS_TID HandleTaskLED1 = NULL;

  27. static uint64_t AppTaskLED1Stk[256/8]; /* 任務(wù)棧 */

  28. /* 任務(wù)句柄 */
  29. OS_TID HandleTaskLED2 = NULL;

  30. static uint64_t AppTaskLED2Stk[256/8];


  31. OS_TID HandleTaskLED3 = NULL;

  32. static uint64_t AppTaskLED3Stk[256/8];


  33. OS_TID HandleTaskLED4 = NULL;

  34. static uint64_t AppTaskLED4Stk[256/8];


  35. OS_TID HandleTaskLED5 = NULL;

  36. static uint64_t AppTaskLED5Stk[256/8];


  37. OS_TID HandleTaskLED6 = NULL;

  38. static uint64_t AppTaskLED6Stk[256/8];

  39. OS_TID HandleTaskLED7 = NULL;

  40. static uint64_t AppTaskLED7Stk[256/8];
  41. OS_SEM semaphore;






  42. /*
  43. *********************************************************************************************************
  44. * 函 數(shù) 名: main
  45. * 功能說明: 標(biāo)準(zhǔn) c 程序入口。
  46. * 形 參: 無
  47. * 返 回 值: 無
  48. *********************************************************************************************************
  49. */
  50. int main (void)
  51. {
  52. /* 初始化外設(shè) */
  53. delay_init();                     //延時(shí)函數(shù)初始化         
  54.         LED_Init();                          //初始化與LED連接的硬件接口
  55.                 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級(jí)分組2
  56.         uart_init(9600);         //串口初始化為9600

  57. /* 創(chuàng)建啟動(dòng)任務(wù) */
  58. os_sys_init_user (AppTaskStart, /* 任務(wù)函數(shù) */
  59. 1, /* 任務(wù)優(yōu)先級(jí) */
  60. &AppTaskStartStk, /* 任務(wù)棧 */
  61. sizeof(AppTaskStartStk)); /* 任務(wù)棧大小,單位字節(jié)數(shù) */
  62. while(1);
  63. }
  64. /*
  65. *********************************************************************************************************
  66. * 函 數(shù) 名: AppTaskLED
  67. * 功能說明: LED 閃爍
  68. * 形 參: 無
  69. * 返 回 值: 無
  70. * 優(yōu) 先 級(jí): 1 (數(shù)值越小優(yōu)先級(jí)越低,這個(gè)跟 uCOS 相反)
  71. *********************************************************************************************************
  72. */
  73. __task void AppTaskLED(void)
  74. {
  75.                                 /* 創(chuàng)建信號(hào)量計(jì)數(shù)值是0, 用于任務(wù)同步 */
  76. os_sem_init (&semaphore, 0);
  77. while(1)
  78. {
  79.         os_dly_wait(50);
  80. os_sem_send(&semaphore);
  81. LED0=~LED0;
  82. os_dly_wait(10);
  83.         

  84. }
  85. }

  86. /*
  87. *********************************************************************************************************
  88. * 函 數(shù) 名: AppTaskLED
  89. * 功能說明: LED 閃爍
  90. * 形 參: 無
  91. * 返 回 值: 無
  92. * 優(yōu) 先 級(jí): 1 (數(shù)值越小優(yōu)先級(jí)越低,這個(gè)跟 uCOS 相反)
  93. *********************************************************************************************************
  94. */
  95. __task void AppTaskLED1(void)//LED1
  96. {
  97. OS_RESULT xResult;
  98. while(1)
  99. {

  100. xResult= os_sem_wait(&semaphore, 20);
  101. switch(xResult)
  102. {
  103. /*無需等待接受到信號(hào)量同步信號(hào) */
  104. case OS_R_OK:
  105. //printf("無需等待接受到信號(hào)量同步信號(hào)\r\n");
  106.         LED1=~LED1;
  107.         os_dly_wait(10);
  108. break;

  109. /*信號(hào)量不可用,usMaxBlockTime等待時(shí)間內(nèi)收到信號(hào)量同步信號(hào) */
  110. case OS_R_SEM:
  111. //printf("信號(hào)量不可用,usMaxBlockTime等待時(shí)間內(nèi)收到信號(hào)量同步信號(hào)\r\n");
  112.         LED2=~LED2;
  113.         os_dly_wait(20);
  114. break;

  115. /*超時(shí) */
  116. case OS_R_TMO:
  117. //bsp_LedToggle(1);
  118. //bsp_LedToggle(4);
  119.         LED3=~LED3;
  120.         os_dly_wait(30);
  121. break;

  122. /*其他值不處理 */
  123. default:
  124.         //os_dly_wait(100);
  125. break;

  126. }

  127. //os_dly_wait(100);

  128. }
  129. }


  130. /*
  131. *********************************************************************************************************
  132. * 函 數(shù) 名: AppTaskLED
  133. * 功能說明: LED 閃爍
  134. * 形 參: 無
  135. * 返 回 值: 無
  136. * 優(yōu) 先 級(jí): 1 (數(shù)值越小優(yōu)先級(jí)越低,這個(gè)跟 uCOS 相反)
  137. *********************************************************************************************************
  138. */
  139. __task void AppTaskLED2(void)
  140. {
  141.         u8 t;
  142.         u8 len;        
  143.         u16 times=0;
  144. while(1)
  145. {
  146. //read_stm32_id();
  147.         
  148.         printf("\r\n您發(fā)送的消息為:\r\n");
  149.         /*
  150.                 if(USART_RX_STA&0x8000)
  151.                 {                                          
  152.                         len=USART_RX_STA&0x3fff;//得到此次接收到的數(shù)據(jù)長度
  153.                         printf("\r\n您發(fā)送的消息為:\r\n");
  154.                         for(t=0;t<len;t++)
  155.                         {
  156.                                 USART1->DR=USART_RX_BUF[t];
  157.                                 while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
  158.                         }
  159.                         printf("\r\n\r\n");//插入換行
  160.                         USART_RX_STA=0;
  161.                 }else
  162.                 {
  163.                         times++;
  164.                         if(times%5000==0)
  165.                         {
  166.                                 printf("\r\nALIENTEK MiniSTM32開發(fā)板 串口實(shí)驗(yàn)\r\n");
  167.                                 printf("正點(diǎn)原子@ALIENTEK\r\n\r\n\r\n");
  168.                         }
  169.                         if(times%200==0)printf("請輸入數(shù)據(jù),以回車鍵結(jié)束\r\n");  
  170.                         if(times%30==0)LED0=!LED0;//閃爍LED,提示系統(tǒng)正在運(yùn)行.
  171.                         delay_ms(10);   
  172.                 }*/
  173. os_dly_wait(500);
  174. }
  175. }




  176. __task void AppTaskLED3(void)
  177. {
  178. while(1)
  179. {
  180. //LED3=~LED3;
  181. os_dly_wait(30);
  182. }
  183. }




  184. __task void AppTaskLED4(void)
  185. {
  186. while(1)
  187. {
  188. LED4=~LED4;
  189. os_dly_wait(40);
  190. }
  191. }



  192. __task void AppTaskLED5(void)
  193. {
  194. while(1)
  195. {
  196. LED5=~LED5;
  197. os_dly_wait(50);
  198. }
  199. }


  200. __task void AppTaskLED6(void)
  201. {
  202. while(1)
  203. {
  204. LED6=~LED6;
  205. os_dly_wait(60);
  206. }
  207. }


  208. __task void AppTaskLED7(void)
  209. {
  210. while(1)
  211. {
  212. LED7=~LED7;
  213. os_dly_wait(70);
  214. }
  215. }




  216. /*
  217. *********************************************************************************************************
  218. * 函 數(shù) 名: AppTaskStart
  219. * 功能說明: 啟動(dòng)任務(wù),也就是最高優(yōu)先級(jí)任務(wù)。
  220. * 形 參: 無
  221. * 返 回 值: 無
  222. * 優(yōu) 先 級(jí): 2
  223. *********************************************************************************************************
  224. 安 富 萊
  225. */
  226. __task void AppTaskStart(void)
  227. {
  228. AppTaskCreate();
  229. while(1)
  230. {

  231.                 LED8=~LED8;
  232. os_dly_wait(800);
  233. }
  234. }
  235. /*
  236. *********************************************************************************************************
  237. * 函 數(shù) 名: AppTaskCreate
  238. * 功能說明: 創(chuàng)建應(yīng)用任務(wù)
  239. * 形 參: 無
  240. * 返 回 值: 無
  241. *********************************************************************************************************
  242. */
  243. static void AppTaskCreate (void)
  244. {
  245. HandleTaskLED = os_tsk_create_user(AppTaskLED, /* 任務(wù)函數(shù) */
  246. 8, /* 任務(wù)優(yōu)先級(jí) *///數(shù)字越小,優(yōu)先級(jí)越低和UCOS相反
  247. &AppTaskLEDStk, /* 任務(wù)棧 */
  248. sizeof(AppTaskLEDStk)); /* 任務(wù)棧大小,單位字節(jié)數(shù) */

  249. HandleTaskLED1 = os_tsk_create_user(AppTaskLED1, /* 任務(wù)函數(shù) */
  250. 2, /* 任務(wù)優(yōu)先級(jí) *///數(shù)字越小,優(yōu)先級(jí)越低和UCOS相反
  251. &AppTaskLED1Stk, /* 任務(wù)棧 */
  252. sizeof(AppTaskLED1Stk)); /* 任務(wù)棧大小,單位字節(jié)數(shù) */
  253.         

  254. HandleTaskLED2 = os_tsk_create_user(AppTaskLED2,
  255. 3,
  256. &AppTaskLED2Stk,
  257. sizeof(AppTaskLED2Stk));
  258.         
  259.         
  260. HandleTaskLED3 = os_tsk_create_user(AppTaskLED3,
  261. 4,
  262. &AppTaskLED3Stk,
  263. sizeof(AppTaskLED3Stk));


  264. HandleTaskLED4 = os_tsk_create_user(AppTaskLED4,
  265. 5,
  266. &AppTaskLED4Stk,
  267. sizeof(AppTaskLED4Stk));

  268. HandleTaskLED5 = os_tsk_create_user(AppTaskLED5,
  269. 6,
  270. &AppTaskLED5Stk,
  271. sizeof(AppTaskLED5Stk));

  272. HandleTaskLED6 = os_tsk_create_user(AppTaskLED6,
  273. 7,
  274. &AppTaskLED6Stk,
  275. sizeof(AppTaskLED6Stk));

  276. HandleTaskLED7 = os_tsk_create_user(AppTaskLED7,
  277. 9,
  278. &AppTaskLED7Stk,
  279. sizeof(AppTaskLED7Stk));


  280. }
復(fù)制代碼

仿真和程序: STM32F103_rtx_LED2 (1).7z (1.04 MB, 下載次數(shù): 19)

評(píng)分

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

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:39808 發(fā)表于 2024-9-29 22:53 來自手機(jī) | 只看該作者
感謝樓主分享,學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 九九久久精品视频 | 毛色毛片免费看 | 美女国产 | 九七午夜剧场福利写真 | 久久久99国产精品免费 | 日韩免费 | 国产精品久久久久久久久免费丝袜 | 一级黄色毛片子 | 欧美一区二区三区四区五区无卡码 | 亚洲高清一区二区三区 | av网站免费看| 男女精品久久 | 成人一区二区在线 | 一区二区三区日韩精品 | 欧美久久久 | 日韩欧美国产一区二区三区 | 一级毛片视频 | 欧美一区二区三区视频 | 亚洲精品乱码久久久久久9色 | 国产精品天堂 | 欧美日韩在线精品 | 欧美h版| 久久久毛片 | 亚洲一区二区免费视频 | 国产一区二区久久 | 欧美一级二级在线观看 | 免费av观看 | 爱爱免费视频 | 日韩精品在线看 | 精品一区二区三区在线视频 | 伊人伊人| 中文字幕亚洲区一区二 | 国产精品久久国产精品 | 成人免费福利 | 色悠悠久 | 97视频免费 | 五月婷婷中文 | 精品国产第一区二区三区 | 亚洲精品视频在线播放 | av在线亚洲天堂 | 91在线视频播放 |