新聞中心

uC/OSII移植步驟

作者: 時(shí)間:2016-10-08 來源:網(wǎng)絡(luò) 收藏
SP!, {R0-R12,LR,PC}^;pop new task's context
2.多任務(wù)應(yīng)用程序的編寫
1)C語言入口函數(shù)
函數(shù)Main()為C語言入口函數(shù),所有C程序從這里開始運(yùn)行,在該函數(shù)中進(jìn)行如下操作:
調(diào)用函數(shù)ARMTaskgetInit初始化ARM處理器
調(diào)用OSInit初始化系統(tǒng)
調(diào)用OSTaskCreat函數(shù)創(chuàng)建任務(wù):Task1和Task2
調(diào)用ARMTaskgetStart函數(shù)啟動(dòng)時(shí)鐘節(jié)拍中斷
調(diào)用OSStart啟動(dòng)系統(tǒng)任務(wù)調(diào)度
#i nclude “config.h”
OS_STKTaskStartStk[TASK_STK_SIZE];
OS_STKTaskStk[TASK_STK_SIZE];
int Main(void){
OSInit();
OSTaskCreate(Task1,(void*)0,TaskStartStk[TASK_STK_SIZE-1],0);
OSStart();
return();
}
2)任務(wù)處理函數(shù)
Task1
void Task1(void *pdata){
pdata=pdata;
TargetInit();
For(;;){
OSTimeDly(OS_TICKS_PER_SEC/50);
If(GetKey()!=KEY1){
continue;
}
OSTaskCreate(Task2,(void *)0,TaskStk[TASK_STK_SIZE-1],10);
While(GetKey()!=0){
OSTimeDly(OS_TICKS_PER_SEC/50);
}
}
}
Task2
void Task2(void *pdata){
pdata=pdata;
BeeMoo();
OSTimeDly(OS_TICKS_PER_SEC/8);
BeeMoo();
OSTimeDly(OS_TICKS_PER_SEC/4);
BeeMoo();
OSTimeDly(OS_TICKS_PER_SEC/8);


關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉