UCOSII 在51系列單片機C8051f340的移植實例
0.png (61.01 KB, 下載次數: 97)
下載附件
2017-1-8 22:48 上傳
全部源碼下載:
UCOS-II操作系統(創建任務學習).rar
(258.45 KB, 下載次數: 76)
2017-1-6 13:44 上傳
點擊文件名下載附件
UCOSII C51 下載積分: 黑幣 -5
apps的主程序:
- /********************************************************************
- * 文件名 : usertask.c
- * 描述 : UCOS-II的main函數文件,該例子是創建任務實驗學習,任務之間可以完全獨立,
- * 通過在任務中調用OSTimeDly(),來完成任務的掛起,讓別的任務運行。
- * 這里創建了3個任務,任務1開關LED12、任務2開關LED13、任務3開關LED14。
- * 創建人 :云杰
- * QQ :494713348
- * 電話 :15123350190
- * Email :founder_elec@foxmail.com
- * 網址 :http://shop66398134.taobao.com
- * 時間 :2010年4月10日
- * 版本號 :V0.1.0
- * 修改記錄:
- *
- *********************************************************************/
- #include"includes.h"
- #include"absacc.h"
- sbit LED12 = P2^3; //LED12管腳定義
- sbit LED13 = P0^3; //LED13管腳定義
- sbit LED14 = P2^2; //LED14管腳定義
- OS_STK xdata StartTaskStk[USER_STACK_SIZE],Task1Stk[USER_STACK_SIZE],Task2Stk[USER_STACK_SIZE];
- //定義3個信號量
- INT8U err;
- void StartTask(void) KCREENTRANT;
- void Task1(void) KCREENTRANT;
- void Task2(void) KCREENTRANT;
- void InitTimer0(void)KCREENTRANT;
- void main(void)
- {
- EA=0;
- PCA0MD &= ~0x40; //禁止看門狗
- OSCICN |= 0x83; //不分頻,使用內部12M晶振,系統時鐘頻率為12MHz
- OSInit();
- OSTaskCreate(StartTask,(void *)0,&StartTaskStk[0],0);//創建第一個任務
- OSStart();
- }
- void StartTask(void) KCREENTRANT
- {
- P0MDOUT = 0x08; // 設置P0.3 輸出為推挽方式
- P2MDOUT = 0x0c; // 設置P2.2,P2.3輸出為推挽方式
- XBR1 = 0x40;
- LED12 = 1;
- LED13 = 1;
- LED14 = 1;
- InitTimer0();
- OSStatInit(); //開啟CPU使用率統計
- //程序中的任務建議在這里創建,當然也可以在其它任務中創建任務
- OSTaskCreate(Task1, (void *)0, &Task1Stk[0], 2);
- OSTaskCreate(Task2, (void *)0, &Task2Stk[0], 3);
- for(;;)
- {
- LED12 = ~LED12;
- OSTimeDly(20);
- }
- }
- void Task1(void) KCREENTRANT
- {
- for(;;)
- {
- LED13 = ~LED13;
- OSTimeDly(40);
- }
- }
- void Task2(void) KCREENTRANT
- {
- for(;;)
- {
- LED14 = ~LED14;
- OSTimeDly(60);
- }
- }
復制代碼
|