完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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的二值信号量的状态 |
|
相关推荐
6个回答
|
|
任务阻塞以后会把任务放到对应等待的信号量的等待列表里面,这样信号量更新的时候会查询等待该信号量的任务,并将对应的任务移到就绪列表中,下一次时钟节拍来的时候会将最高优先级的任务运行
|
|
|
|
|
|
自己再顶下,我自己理解和实验的结果是, PackUpdateRegular_task获取一次 信号量无效的时候 就进入堵塞态,直到中断释放了信号量 这个任务才到就绪态,等待下次任务切换。
|
|
|
|
讲清这个问题最好结合代码。把源码拉出来
|
|
|
|
也可能是恢复调度器的时候做任务切换?
|
|
|
|
4楼正解!
|
|
|
|
只有小组成员才能发言,加入小组>>
813 浏览 0 评论
1162 浏览 1 评论
2535 浏览 5 评论
2871 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2719 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1111浏览 3评论
198浏览 2评论
465浏览 2评论
379浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
461浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 17:52 , Processed in 1.201021 second(s), Total 87, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号