参考原子哥的教程例10-3,自己编写任务同步实验,发现实验想想不对,仔细对照后发现出现在任务切换的时间上,不知道为什么。
请看程序,其他未写内容和教程相同。具体疑问请看红颜色字体
void task1_task(void *p_arg)
{
u8 key;
OS_ERR err;
while(1)
{
key = KEY_Scan(0); //扫描按键
if(key==WKUP_PRES)
{
OSSemPost(&MY_SEM,OS_OPT_POST_1,&err);
LCD_ShowxNum(150,111,MY_SEM.Ctr,3,16,0);
}
OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err); //这个延时10ms,现象正确
// OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_PERIODIC,&err); // 这个延时1s,现象就不对
}
}
void task2_task(void *p_arg)
{
OS_ERR err;
p_arg = p_arg;
while(1)
{
OSSemPend (&MY_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);
LED1=~LED1;
LCD_ShowxNum(150,111,MY_SEM.Ctr,3,16,0);
OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_PERIODIC,&err);
}
}
|