rt:
定义了两个任务void led1_task(void *pdata) 和 void led2_task(void *pdata),led1_task的优先级要比led2_task的优先级高,开始运行会首先执行led1_task,led_task执行完了,要怎么才能执行led2_task呢?
led2_task执行完了,怎么又跳到led1_task?KEY5和KEY6是两个外部中断的标志位。
我用的OSTimeDly,实现不了。
void led1_task(void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
cpu_sr = cpu_sr;
pdata = pdata;
while(1)
{
if(KEY5 == 1)
{
LED1_ON;
LCD_Color(0xFFFF);
Draw_Circle(50, 50, 10);
Chinesestr(6, 120, "现在在画园", BLUE, 0xFFFF);
OSTimeDlyHMSM(0, 0, 1, 0);
LED1_OFF;
KEY5 = 0;
OSTimeDly(1000);
}
}
}
void led2_task(void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
cpu_sr = cpu_sr;
pdata = pdata;
while(1)
{
if(KEY6 == 1)
{
LED2_ON;
LCD_Color(0xFFFF);
//LCD_Draw_window(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color)
LCD_Draw_window(2, 2, 100, 100, RED);
Chinesestr(6, 50, "现在在画矩形", RED, 0xFFFF);
OSTimeDlyHMSM(0, 0, 1, 0);
LED2_OFF;
KEY6 = 0;
OSTimeDly(1000);
}
}
}
|