標(biāo)題: UCOSII實(shí)驗(yàn) [打印本頁]
作者: dori 時(shí)間: 2020-12-8 15:04
標(biāo)題: UCOSII實(shí)驗(yàn)
/////////////////////////UCOSII任務(wù)堆棧設(shè)置///////////////////////////////////
//START 任務(wù)
//設(shè)置任務(wù)優(yōu)先級
#define START_TASK_PRIO 10 //開始任務(wù)的優(yōu)先級設(shè)置為最低
//設(shè)置任務(wù)堆棧大小
#define START_STK_SIZE 64
//創(chuàng)建任務(wù)堆?臻g
OS_STK START_TASK_STK[START_STK_SIZE];
//任務(wù)函數(shù)接口
void start_task(void *pdata);
//LED0任務(wù)
//設(shè)置任務(wù)優(yōu)先級
#define LED0_TASK_PRIO 7
//設(shè)置任務(wù)堆棧大小
#define LED0_STK_SIZE 64
//創(chuàng)建任務(wù)堆?臻g
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
//任務(wù)函數(shù)接口
voidled0_task(void *pdata);
//LED1任務(wù)
//設(shè)置任務(wù)優(yōu)先級
#define LED1_TASK_PRIO 6
//設(shè)置任務(wù)堆棧大小
#define LED1_STK_SIZE 64
//創(chuàng)建任務(wù)堆棧空間
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
//任務(wù)函數(shù)接口
void led1_task(void *pdata);
int main(void)
{
delay_init();//延時(shí)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2
LED_Init();//初始化與LED連接的硬件接口
OSInit(); //UCOSII初始化
OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK
[START_STK_SIZE-1],START_TASK_PRIO );//創(chuàng)建起始任務(wù)
OSStart();
}
//開始任務(wù)
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
OS_ENTER_CRITICAL();//進(jìn)入臨界區(qū)(無法被中斷打斷)
OSTaskCreate(led0_task,(void *)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],
LED0_TASK_PRIO);
OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],
LED1_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO);//掛起起始任務(wù).
OS_EXIT_CRITICAL();//退出臨界區(qū)(可以被中斷打斷)
}
//LED0任務(wù)
void led0_task(void *pdata)
{
while(1)
{
LED0=0;
delay_ms(80);
LED0=1;
delay_ms(920);
};
}
//LED1任務(wù)
void led1_task(void *pdata)
{
while(1)
{
LED1=0;
delay_ms(300);
LED1=1;
delay_ms(300);
}
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |