硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2407|回复: 11
收起左侧

[μCOS-II] 中断服务里都必须使用中断管理函数吗?

[复制链接]

20

主题

110

回帖

170

积分

初级会员

积分
170
发表于 2020-5-1 15:54:11 | 显示全部楼层 |阅读模式
查了好多资料都只说了功能原理,没说在什么情况下用。有的说在中断里post信号、消息的才要用OSIntEnter()和OSIntExit(),有的说只要有中断都必须加。前者我知道是必须的,但是后者,如果某个中断里只是控制个IO口,还加上OSIntExit()引起任务调度有必要吗?或者说加上还有其他的好处?

回复

使用道具 举报

73

主题

1197

回帖

1416

积分

至尊会员

积分
1416
发表于 2020-5-1 18:15:31 | 显示全部楼层
必须加~~
回复

使用道具 举报

610

主题

3060

回帖

4910

积分

至尊会员

积分
4910
发表于 2020-5-1 19:23:29 | 显示全部楼层
我觉得如果只是控制个 io 翻转 就没有必要加吧,
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
发表于 2020-5-1 21:37:34 | 显示全部楼层
必须要加的,OSIntEnter()主要对全局变量OSIntNesting加1,而这个变量的作用是使uC OS-II可以跟踪中断嵌套,在最后一个嵌套的ISR上执行重新调度
回复

使用道具 举报

19

主题

371

回帖

428

积分

高级会员

积分
428
发表于 2020-5-1 21:47:44 | 显示全部楼层
用 NKA(non kernel aware)特性的中断服务,就像裸机中断一样
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2020-5-1 22:41:25 | 显示全部楼层
h_007 发表于 2020-5-1 21:47
用 NKA(non kernel aware)特性的中断服务,就像裸机中断一样

第一次听说这个,搜了下好像ucos或者stm32都没见多少相关资料呢
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2020-5-1 22:59:28 | 显示全部楼层
dyhfaily 发表于 2020-5-1 21:37
必须要加的,OSIntEnter()主要对全局变量OSIntNesting加1,而这个变量的作用是使uC OS-II可以跟踪中断嵌套 ...

有几个问题,
1、OSIntNesting作用除了防止在中断中错误使用各种XxxPend()的函数导致卡死和在最后一个嵌套的ISR上执行重新调度,还有别的功能吗?前者我觉得靠自律可以避免的。
2、未退出中断嵌套就调度有什么后果??
回复

使用道具 举报

19

主题

371

回帖

428

积分

高级会员

积分
428
发表于 2020-5-1 23:35:16 | 显示全部楼层
NKA中断好像是3.05以后的版本才添加的,使用ucosIII v3.08版本吧,用NKA中断很适合简单定时LED翻转控制之类的功能。找找BSP中的int文件,专门有讲解NKA的用法
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2020-5-2 09:53:08 | 显示全部楼层
1、老版的,对于M内核来说,如果中断里面没有调用uCOS的API,其实加不加都没有关系,因为已经有强劲的NVIC来实现各种中断嵌套的处理。

本身主要目的就是为了实现中断多级嵌套和退出中断时,没有中断嵌套,即最后一级中断的情况下根据需要才执行任务切换,M内核的NVIC可以很好的处理这些了。

2、新版II和III都已经采用下面的方案了:

中断管理分为Kernel Aware和Non-Kernel Aware
(1)Kernel Aware 表示受到uCOS管理的中断服务程序。
(2)Non-Kernel Aware 表示不受管理的中断服务程序,中断使用跟裸机一样,但不可调用uCOS的API。

实现原理:
特别注意,现在的新版uCOS-II和III的开关中断也开始采用BASEPRI寄存器设置
http://www.armbbs.cn/forum.php?m ... id=93572&fromuid=58
(出处: 硬汉嵌入式论坛)





回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2020-5-2 18:30:25 | 显示全部楼层
eric2013 发表于 2020-5-2 09:53
1、老版的,对于M内核来说,如果中断里面没有调用uCOS的API,其实加不加都没有关系,因为已经有强劲的NVIC ...

是2.9x的版本吗?我现在用的是2.86
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2020-5-2 20:09:02 | 显示全部楼层
飛饵 发表于 2020-5-2 18:30
是2.9x的版本吗?我现在用的是2.86

基于V5,V6和V7的最新版uCOS-II V2.93.00程序模板,含MDK和IAR两个版本,支持uC/Probe(2020-03-20)
http://www.armbbs.cn/forum.php?m ... 6928&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

610

主题

3060

回帖

4910

积分

至尊会员

积分
4910
发表于 2020-5-2 20:13:46 | 显示全部楼层
飛饵 发表于 2020-5-2 18:30
是2.9x的版本吗?我现在用的是2.86

新版的 ucos-ii  >= v2.93.0

   ucos-iii   >= 3.08.0
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 18:20 , Processed in 0.311801 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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