初级会员

- 积分
- 53
- 金钱
- 53
- 注册时间
- 2018-4-2
- 在线时间
- 7 小时
|
1金钱
void PackUpdateRegular_task(void *pvParameters) 任务优先级最高
{
while(1)
{
err=xSemaphoreTake(RegHeartSemaphore,portMAX_DELAY); //获取信号量
if( err==pdTRUE)
{
..........
}
}
}
void 任务1 // 任务优先级低
{
while(1)
{
......
}
}
void 任务2 // 任务优先级低
{
while(1)
{
......
}
}
void 某个中断
{
xSemaphoreGiveFromISR(RegHeartSemaphore,&xHigherPriorityTaskWoken); //释放二值信号量
}
大神 请教下这样处理 ,PackUpdateRegular_task里面一直在获取二值信号量,是不是获取第一次 信号量无效的时候 就进入堵塞态的,然后就去执行低优先级的任务,PackUpdateRegular_task阻塞态没有结束,不会去频繁查询二值信号量,只有当中断里面释放了 二值信号量 才会再下次任务调度后 去执行PackUpdateRegular_task 里面的内容,。。。。。。。。。。。。。。。。还是每次任务调度后 都去判断下任务优先级高的PackUpdateRegular_task的二值信号量的状态
|
|