OpenEdv-开源电子网

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

UCOSIII OSIntExit()和OSIntEnter()的问题

[复制链接]

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-7-19
在线时间
6 小时
发表于 2018-7-19 20:50:27 | 显示全部楼层 |阅读模式
1金钱
  首先视频中讲中断服务函数会在进入中断时关闭中断,退出时打开中断,但是实际上OSIntEnter()没有关闭中断的操作,只有OSIntExit()里才有,这点不懂。
然后void  OSIntExit (void)
{
    CPU_SR_ALLOC();

    if (OSRunning != OS_STATE_OS_RUNNING) {     
        return;                                         
    }
    CPU_INT_DIS();  //这里才有关闭中断的操作
  
    if (OSIntNestingCtr == (OS_NESTING_CTR)0) {     
        CPU_INT_EN();                                         
        return;                             //这里可以理解
OSIntNestingCtr 减到0,说明要退出最后一个嵌套了,但是在这一步退出的话下面的寻找下一个任务的事情岂不是做不了了?

    }
    OSIntNestingCtr--;
    if (OSIntNestingCtr > (OS_NESTING_CTR)0) {         
        CPU_INT_EN();                           
        return;          //这里无法理解,能进入这个if说明嵌套还没结束,没结束为什么要打开中断?不是要最后退出才打开中断?
    }
    if (OSSchedLockNestingCtr > (OS_NESTING_CTR)0) {   
        CPU_INT_EN();                          
        return;      
    }
    OSPrioHighRdy   = OS_PrioGetHighest();              
    OSTCBHighRdyPtr = OSRdyList[OSPrioHighRdy].HeadPtr;   
    if (OSTCBHighRdyPtr == OSTCBCurPtr) {               
        CPU_INT_EN();                                 
        return;
    }
这个函数这么几处我都看不太懂,希望谁来给我解释下,谢谢

最佳答案

查看完整内容[请看2#楼]

视频说错了,这两个函数不是用来开关中断的。而是用来统计中断嵌套次数的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-7-19 20:50:28 | 显示全部楼层
视频说错了,这两个函数不是用来开关中断的。而是用来统计中断嵌套次数的。
回复

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-7-19
在线时间
6 小时
 楼主| 发表于 2018-7-19 21:01:51 | 显示全部楼层
我又看了下,第二个if是来判断是否进入了中断的,也就是检查在Exit之前有没有经过Enter。那第二个if没有问题了
回复

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-7-19
在线时间
6 小时
 楼主| 发表于 2018-7-19 21:03:44 | 显示全部楼层
但还是看不懂第三个if里,为什么中断还没结束就打开了中断,以及为什么Enter里没有关闭中断的操作。
回复

使用道具 举报

29

主题

162

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1243
金钱
1243
注册时间
2018-4-25
在线时间
185 小时
发表于 2018-7-23 17:27:44 | 显示全部楼层
正点原子 发表于 2018-7-19 20:50
视频说错了,这两个函数不是用来开关中断的。而是用来统计中断嵌套次数的。

哪有UCOSIII的视频
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-6 21:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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