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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

發(fā)個STM32F103單片機8任務RTX例程,帶Proteus仿真

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:899981 發(fā)表于 2024-9-13 10:55 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


單片機源程序如下:
  1. #include "includes.h" /* 底層硬件驅(qū)動 */
  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]; /* 任務棧 */
  22. static uint64_t AppTaskStartStk[512/8]; /* 任務棧 */
  23. /* 任務句柄 */
  24. OS_TID HandleTaskLED = NULL;
  25. /* 任務句柄 */
  26. OS_TID HandleTaskLED1 = NULL;

  27. static uint64_t AppTaskLED1Stk[256/8]; /* 任務棧 */

  28. /* 任務句柄 */
  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. * 功能說明: 標準 c 程序入口。
  46. * 形 參: 無
  47. * 返 回 值: 無
  48. *********************************************************************************************************
  49. */
  50. int main (void)
  51. {
  52. /* 初始化外設 */
  53. delay_init();                     //延時函數(shù)初始化         
  54.         LED_Init();                          //初始化與LED連接的硬件接口
  55.                 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設置中斷優(yōu)先級分組2
  56.         uart_init(9600);         //串口初始化為9600

  57. /* 創(chuàng)建啟動任務 */
  58. os_sys_init_user (AppTaskStart, /* 任務函數(shù) */
  59. 1, /* 任務優(yōu)先級 */
  60. &AppTaskStartStk, /* 任務棧 */
  61. sizeof(AppTaskStartStk)); /* 任務棧大小,單位字節(jié)數(shù) */
  62. while(1);
  63. }
  64. /*
  65. *********************************************************************************************************
  66. * 函 數(shù) 名: AppTaskLED
  67. * 功能說明: LED 閃爍
  68. * 形 參: 無
  69. * 返 回 值: 無
  70. * 優(yōu) 先 級: 1 (數(shù)值越小優(yōu)先級越低,這個跟 uCOS 相反)
  71. *********************************************************************************************************
  72. */
  73. __task void AppTaskLED(void)
  74. {
  75.                                 /* 創(chuàng)建信號量計數(shù)值是0, 用于任務同步 */
  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) 先 級: 1 (數(shù)值越小優(yōu)先級越低,這個跟 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. /*無需等待接受到信號量同步信號 */
  104. case OS_R_OK:
  105. //printf("無需等待接受到信號量同步信號\r\n");
  106.         LED1=~LED1;
  107.         os_dly_wait(10);
  108. break;

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

  115. /*超時 */
  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) 先 級: 1 (數(shù)值越小優(yōu)先級越低,這個跟 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ā)板 串口實驗\r\n");
  167.                                 printf("正點原子@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)正在運行.
  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. * 功能說明: 啟動任務,也就是最高優(yōu)先級任務。
  220. * 形 參: 無
  221. * 返 回 值: 無
  222. * 優(yōu) 先 級: 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)建應用任務
  239. * 形 參: 無
  240. * 返 回 值: 無
  241. *********************************************************************************************************
  242. */
  243. static void AppTaskCreate (void)
  244. {
  245. HandleTaskLED = os_tsk_create_user(AppTaskLED, /* 任務函數(shù) */
  246. 8, /* 任務優(yōu)先級 *///數(shù)字越小,優(yōu)先級越低和UCOS相反
  247. &AppTaskLEDStk, /* 任務棧 */
  248. sizeof(AppTaskLEDStk)); /* 任務棧大小,單位字節(jié)數(shù) */

  249. HandleTaskLED1 = os_tsk_create_user(AppTaskLED1, /* 任務函數(shù) */
  250. 2, /* 任務優(yōu)先級 *///數(shù)字越小,優(yōu)先級越低和UCOS相反
  251. &AppTaskLED1Stk, /* 任務棧 */
  252. sizeof(AppTaskLED1Stk)); /* 任務棧大小,單位字節(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. }
復制代碼

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

評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品亚洲综合 | 日一日操一操 | 国产精品久久99 | 亚洲精品国产电影 | 亚洲一区二区电影在线观看 | 国产激情综合五月久久 | av中文字幕在线播放 | 鸡毛片| 日韩有码一区 | 久久亚洲一区 | 97精品超碰一区二区三区 | 精品国产欧美日韩不卡在线观看 | 国产成人精品午夜 | 欧美精品一区二区三区在线播放 | 91在线视频国产 | 激情五月综合 | 一区二区三区四区五区在线视频 | 成人在线免费观看 | 国产精品成人一区二区 | 国产欧美一区二区三区免费 | 成人免费视频播放 | 中文字幕在线播放不卡 | 高清亚洲 | 激情五月综合 | 日批日韩在线观看 | 欧美成人h版在线观看 | 日韩三区| 精品久久久久久亚洲精品 | 九九亚洲 | 午夜影院视频在线观看 | 九九视频在线观看 | 天天射天天干 | 亚洲欧美日韩电影 | 久久久久久国产精品免费免费 | 欧美高清视频 | 国产欧美一级二级三级在线视频 | 99久久久国产精品 | 成人超碰在线 | 国产精品久久久乱弄 | 成年人视频在线免费观看 | 久久久久久天堂 |