包括UCOSII實驗例程!
0.png (46.98 KB, 下載次數(shù): 38)
下載附件
2018-7-23 22:51 上傳
單片機源程序如下:
- #include "public.h"
- #define START_TASK_PRIO 10 //開始任務優(yōu)先級
- #define START_STK_SIZE 64 //設置任務堆棧大小
- OS_STK START_TASK_STK[START_STK_SIZE]; //創(chuàng)建任務堆棧空間
- #define LED1_TASK_PRIO 1 //led1任務優(yōu)先級
- #define LED1_STK_SIZE 64 //設置任務堆棧大小
- OS_STK LED1_TASK_STK[LED1_STK_SIZE]; //創(chuàng)建任務堆棧空間
- #define BUTTON_TASK_PRIO 3 //BUTTON任務優(yōu)先級
- #define BUTTON_STK_SIZE 64 //設置任務堆棧大小
- OS_STK BUTTON_TASK_STK[BUTTON_STK_SIZE]; //創(chuàng)建任務堆棧空間
- #define BEEP_TASK_PRIO 5 //BEEP任務優(yōu)先級
- #define BEEP_STK_SIZE 64 //設置任務堆棧大小
- OS_STK BEEP_TASK_STK[BEEP_STK_SIZE]; //創(chuàng)建任務堆棧空間
- void start_task(void *pdata);
- void button_task(void *pdata); //任務2 按鍵
- void RCC_Init()
- {
- SystemInit();
- }
- int main()
- {
- delay_init(); //延時初始化
- RCC_Init(); //系統(tǒng)時鐘初始化
- LED_Init(); //端口初始化
- BEEP_Init(); //端口初始化
- key_init();
- OSInit(); //初始化UCOS操作系統(tǒng)
-
- OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1]
- ,START_TASK_PRIO); //創(chuàng)建起始任務
- OSStart(); //啟動ucos操作系統(tǒng)
- }
- void start_task(void *pdata) //開始任務
- {
- OS_CPU_SR cpu_sr=0;
- pdata=pdata;
- OSStatInit(); //初始化統(tǒng)計任務
- OS_ENTER_CRITICAL(); //進入臨界區(qū),中斷無法打斷
- OSTaskCreate(led1_task,(void *)0,(OS_STK *)&LED1_TASK_STK[LED1_STK_SIZE-1]
- ,LED1_TASK_PRIO);
- OSTaskCreate(beep_task,(void *)0,(OS_STK *)&BEEP_TASK_STK[BEEP_STK_SIZE-1]
- ,BEEP_TASK_PRIO);
- OSTaskCreate(button_task,(void *)0,(OS_STK *)&BUTTON_TASK_STK[BUTTON_STK_SIZE-1]
- ,BUTTON_TASK_PRIO);
- OSTaskSuspend(START_TASK_PRIO); //掛起起始任務
- OS_EXIT_CRITICAL(); //退出臨界區(qū),中斷可以打斷
- }
- void button_task(void *pdata) //任務2 按鍵
- {
- pdata=pdata;
- while(1)
- {
- if(k_up==1) //掛起
- {
- delay_ms(10);
- if(k_up==1)
- {
- OSTaskSuspend(LED1_TASK_PRIO); //掛起LED1任務
- }
- while(k_up);
- }
-
- if(k_down==0) //恢復
- {
- delay_ms(10);
- if(k_down==0)
- {
- OSTaskResume(LED1_TASK_PRIO); //恢復LED1任務
- }
- while(!k_down);
- }
- if(k_left==0) //刪除
- {
- delay_ms(10);
- if(k_left==0)
- {
- OSTaskDelReq(BEEP_TASK_PRIO); //發(fā)送刪除蜂鳴器任務請求
- }
- while(!k_left);
- }
- if(k_right==0) //創(chuàng)建任務
- {
- delay_ms(10);
- if(k_right==0)
- {
- OSTaskCreate(beep_task,(void *)0,(OS_STK *)&BEEP_TASK_STK[BEEP_STK_SIZE-1]
- ,BEEP_TASK_PRIO);
- }
- while(!k_right);
- }
- delay_ms(10);
- }
- }
復制代碼
所有資料51hei提供下載:
元件庫和封裝庫.zip
(76.6 KB, 下載次數(shù): 22)
2018-7-23 15:19 上傳
點擊文件名下載附件
封裝 下載積分: 黑幣 -5
UCOSII實驗例程.7z
(287.36 KB, 下載次數(shù): 56)
2023-3-11 20:14 上傳
點擊文件名下載附件
ucosii 下載積分: 黑幣 -5
WK2204開發(fā)文檔說明書.pdf
(214.64 KB, 下載次數(shù): 18)
2018-7-23 15:19 上傳
點擊文件名下載附件
WK2204文檔 下載積分: 黑幣 -5
|