
请教前辈,使用uCOS-II时,如何给每个任务分配优先级?
请教前辈,使用uCOS-II操作系统,如何给每个任务分配优先级?应遵循什么原则?系统有两个任务:1、任务1的工作是检测一个按键,如果有按键按下,则delete任务2.2、...
请教前辈,使用uCOS-II操作系统,如何给每个任务分配优先级?应遵循什么原则?系统有两个任务:1、任务1的工作是检测一个按键,如果有按键按下,则delete任务2.2、任务2的工作是LED闪烁.我做了这样两组实验:1、如果任务1的优先级高于任务2,则任务2不会执行;2、如果任务1的优先级低于任务2,则两个任务都会运行,并且当按键按下时,任务2会被delete。请教前辈,这是为什么?在给每个任务分配优先级时,应遵循什么原则?下面是我两个任务的代码void mainTask1(void *pvData){ pvData = pvData; while (1) { OSTimeDly(OS_TICKS_PER_SEC / 4); LED3_OFF(); OSTimeDly(OS_TICKS_PER_SEC / 4); LED3_ON(); }}void mainTask2(void *pvData){ pvData = pvData; while (1) { if( SEL0 == SEL0_ON() ) { OSTimeDly(OS_TICKS_PER_SEC / 4); if( SEL0 == SEL0_ON() ) { OSTaskDel(4); } } }}
展开
展开全部
如果按键检测任务优先级高就会一直工作,不会空出CPU使系统给task2分配资源,所以维持在只有task1工作的状态;设置task2优先级高的时候,优先满足task2工作,当task2运行到OSTimeDly()函数执行延时等待而不需要占用CPU时,系统就会将资源分配给task1去处理按键事件。优先级高的任务总是优先得到执行,当它进入延时或者因为获取消息进入阻塞状态时,才被挂起而腾出CPU给其他任务,直到它走出延时或者得到消息。
2014-03-05
展开全部
我想结贴,但是说“分数未分配完,或分数存在错误”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询