完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
小弟最近在看ucosIII,对其中的中断调度不是很理解,下面是小弟的理解,恳请大神指教~
我在OSInitExit()函数中发现如下语句: [C] 纯文本查看 复制代码 OSPrioHighRdy = OS_PrioGetHighest(); /* Find highest priority */ OSTCBHighRdyPtr = OSRdyList[OSPrioHighRdy].HeadPtr; /* Get highest priority task ready-to-run */ if (OSTCBHighRdyPtr == OSTCBCurPtr) { /* Current task still the highest priority? */ CPU_INT_EN(); /* Yes */ return; } 小弟疑问:中断不是按照中断枪战优先级和响应优先级划分的吗? 假如这里的中断优先级和中断所在的任务的优先级冲突了,该怎么处理? 恳请大神指教~~~ |
|
相关推荐
3个回答
|
|
|
恩,是的
|
|
|
|
|
|
中断是按照中断枪战优先级和响应优先级划分的。这里的中断的优先级是要调度的任务的优先级。你要注意这一句
OSIntNestingCtr--; if (OSIntNestingCtr > (OS_NESTING_CTR)0) { /* ISRs still nested? */ CPU_INT_EN(); /* Yes */ return; 当OSIntNestingCtr大于0的时候,就说明中断还在嵌套,这样的话就不会发生任务调度,它会一直执行所有的中断嵌套直到OSIntNestingCtr==0; 但是如果OSIntNestingCtr一开始就等于0,那就不一样了那就发生了中断级任务调度,接下来就是找已经就绪的最高级任务了。 所以这里两个优先级不冲突,先完成所有不同中断优先级后在跳出来,再按照任务优先级执行调度。 |
|
|
|
|
|
大神:小弟还想确认下:
任务级调度:执行完该任务后接下来该执行哪个任务 中断级调度:退出中断后(当然是从所有嵌套中断中退出,如果有的话),该执行哪个任务. 是这个意思吧 小弟之前认为:这里的中断调度是指调度进入哪个中断,应该是理解错了.恳请大神确认下~~~ |
|
|
|
|
只有小组成员才能发言,加入小组>>
1022 浏览 1 评论
1852 浏览 0 评论
1833 浏览 1 评论
3258 浏览 5 评论
3585 浏览 9 评论
1026浏览 1评论
1853浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1365浏览 1评论
1856浏览 0评论
1181浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 01:22 , Processed in 0.759413 second(s), Total 80, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1798