OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3242|回复: 3

ucosIII 中断调度概念理解 void OSIntExit(void)

[复制链接]

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
发表于 2016-6-6 16:12:10 | 显示全部楼层 |阅读模式
10金钱
小弟最近在看ucosIII,对其中的中断调度不是很理解,下面是小弟的理解,恳请大神指教~
我在OSInitExit()函数中发现如下语句:
[mw_shl_code=c,true]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;
    }[/mw_shl_code]
小弟疑问:中断不是按照中断枪战优先级和响应优先级划分的吗?
假如这里的中断优先级和中断所在的任务的优先级冲突了,该怎么处理?
恳请大神指教~~~

最佳答案

电子爱好者
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2014-4-14
在线时间
1 小时
发表于 2016-6-6 16:12:11 | 显示全部楼层
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2014-4-14
在线时间
1 小时
发表于 2016-6-6 16:59:12 | 显示全部楼层
中断是按照中断枪战优先级和响应优先级划分的。这里的中断的优先级是要调度的任务的优先级。你要注意这一句
    OSIntNestingCtr--;
    if (OSIntNestingCtr > (OS_NESTING_CTR)0) {              /* ISRs still nested?                                     */
        CPU_INT_EN();                                       /* Yes                                                    */
        return;
当OSIntNestingCtr大于0的时候,就说明中断还在嵌套,这样的话就不会发生任务调度,它会一直执行所有的中断嵌套直到OSIntNestingCtr==0;
但是如果OSIntNestingCtr一开始就等于0,那就不一样了那就发生了中断级任务调度,接下来就是找已经就绪的最高级任务了。

所以这里两个优先级不冲突,先完成所有不同中断优先级后在跳出来,再按照任务优先级执行调度。
回复

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
 楼主| 发表于 2016-6-6 17:15:03 | 显示全部楼层
qqll702006 发表于 2016-6-6 16:59
中断是按照中断枪战优先级和响应优先级划分的。这里的中断的优先级是要调度的任务的优先级。你要注意这一句 ...

大神:小弟还想确认下:
任务级调度:执行完该任务后接下来该执行哪个任务
中断级调度:退出中断后(当然是从所有嵌套中断中退出,如果有的话),该执行哪个任务.

是这个意思吧
小弟之前认为:这里的中断调度是指调度进入哪个中断,应该是理解错了.恳请大神确认下~~~
电子爱好者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 19:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表