UCOS III任务同步实验问题

2019-07-20 08:02发布

在学习UCOS III任务同步实验的时候有点疑惑,下面是两个任务函数体,我的疑问是在原子的视频中,连续快速按KEY_UP按键的时候,从视频中可以看出,信号量的值是先连续增加,然后再依次递减,我的疑问是为什么在连续快速按up按键的时候,task2没有执行,打个比方,我们连续快速按up按键5次,在第一次按的时候,信号量的值从0变为1,这说明执行了task1中的OSSemPost(&SYNC_SEM,OS_OPT_POST_1,&err)     LCD_ShowxNum(150,111,SYNC_SEM.Ctr,3,16,0);这两个函数,那执行完LCD_ShowxNum(150,111,SYNC_SEM.Ctr,3,16,0)函数后不是应该执行OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err)函数吗?在执行OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err)的时候,不是应该做任务调度,发生任务切换,切换到任务task2的吗?总之我觉得无论按多快,只要按了,应该马上任务切换的吧。怎么会在连按的时候,仿佛一直在task1,请大家点拨一下,我脑子缺根筋,谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
bh1023058880
2019-07-20 14:58
本帖最后由 bh1023058880 于 2018-5-22 22:59 编辑

[table=98%,rgb(232, 232, 232)]
[tr][td]在学习UCOS III任务同步实验的时候有点疑惑,下面是两个任务函数体,我的疑问是在原子的视频中,连续快速按KEY_UP按键的时候,从视频中可以看出,信号量的值是先连续增加,然后再依次递减,我的疑问是为什么在连续快速按up按键的时候,task2没有执行,打个比方,我们连续快速按up按键5次,在第一次按的时候,信号量的值从0变为1,这说明执行了task1中的OSSemPost(&SYNC_SEM,OS_OPT_POST_1,&err)     LCD_ShowxNum(150,111,SYNC_SEM.Ctr,3,16,0);这两个函数,那执行完LCD_ShowxNum(150,111,SYNC_SEM.Ctr,3,16,0)函数后不是应该执行OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err)函数吗?在执行OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err)的时候,不是应该做任务调度,发生任务切换,切换到任务task2的吗?总之我觉得无论按多快,只要按了,应该马上任务切换的吧。怎么会在连按的时候,仿佛一直在task1,请大家点拨一下,我脑子缺根筋,谢谢了

一周热门 更多>