硬汉嵌入式论坛

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

[FreeRTOS] ucos在中断中有 OSIntEnter(), OSIntExit()这两个函数,freertos有相应的函数吗?

[复制链接]

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2016-2-20 11:18:42 | 显示全部楼层 |阅读模式
如题
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2016-2-20 11:31:23 | 显示全部楼层
不需要,ucos的这种是为了实现中断多级嵌套和退出中断时,没有中断嵌套,即最后一级中断的情况下根据需要才执行任务切换。

对于M3/M4内核中断嵌套已经做的很好了。在FreeRTOS中没有调用其API,什么都不用加。其实uCOS也可以这样做的,但是为了所有代码的统一,加上为好。
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
 楼主| 发表于 2016-2-20 13:21:52 | 显示全部楼层
明白了
回复

使用道具 举报

9

主题

38

回帖

65

积分

初级会员

积分
65
发表于 2019-6-28 16:14:30 | 显示全部楼层
eric2013 发表于 2016-2-20 11:31
不需要,ucos的这种是为了实现中断多级嵌套和退出中断时,没有中断嵌套,即最后一级中断的情况下根据需要才 ...

在FreeRTOS中没有调用其API,什么都不用加。其实uCOS也可以这样做的

对于这个问题,以前在407做的一个项目,USB挂载U盘,会出现跑飞的情况,后面发现,中断函数没有加OSIntEnter ,加上去之后就好了。。。

现在看到你这回答,我都担心我的代码还有问题了
回复

使用道具 举报

22

主题

93

回帖

159

积分

初级会员

积分
159
发表于 2020-6-9 09:49:33 | 显示全部楼层
eric2013 发表于 2016-2-20 11:31
不需要,ucos的这种是为了实现中断多级嵌套和退出中断时,没有中断嵌套,即最后一级中断的情况下根据需要才 ...

UCOS中感觉这个OSIntEnter和OSIntExit完全没必要吧。PendSV的优先级是最低的,即使不是在最后一级中断中调用了相关API进行任务切换,也不会打断当前中断啊,所以根本不需要调用OSIntEnter和OSIntExit
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2020-6-9 10:45:30 | 显示全部楼层
shibinjie 发表于 2020-6-9 09:49
UCOS中感觉这个OSIntEnter和OSIntExit完全没必要吧。PendSV的优先级是最低的,即使不是在最后一级中断中 ...

其实不写,没啥影响。

现在最新版的uCOS全家桶修改成受uCOS控制的中断和不受uCOS控制的中断,不受控制的可以不用写了。
回复

使用道具 举报

22

主题

93

回帖

159

积分

初级会员

积分
159
发表于 2020-6-9 12:49:13 | 显示全部楼层
eric2013 发表于 2020-6-9 10:45
其实不写,没啥影响。

现在最新版的uCOS全家桶修改成受uCOS控制的中断和不受uCOS控制的中断,不受控制 ...

就是那个Kernel Aware和Non-Kernel Aware咯。话说不受控制的中断里面可以调用OS的API吗,比如带POST的API
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2020-6-9 12:52:16 | 显示全部楼层
shibinjie 发表于 2020-6-9 12:49
就是那个Kernel Aware和Non-Kernel Aware咯。话说不受控制的中断里面可以调用OS的API吗,比如带POST的API

不受控制的,不可以调用API,本意是这样的。
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
发表于 2020-6-22 11:44:13 | 显示全部楼层
eric2013 发表于 2020-6-9 12:52
不受控制的,不可以调用API,本意是这样的。

硬汉兄  看源码 不受控的中断 调用POST这些其实没啥事啊 pendsv中断 反正优先级最低。 受控中断只会在最后一次中断退出的时候调用OS_Sched,不受控的可能每次都会调用OS_Sched,OS_Sched()多调用几次也没影响把,只是找出最高优先级的就绪任务的控制块然后触发pendsv中断。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2020-6-22 17:05:51 | 显示全部楼层
dyhfaily 发表于 2020-6-22 11:44
硬汉兄  看源码 不受控的中断 调用POST这些其实没啥事啊 pendsv中断 反正优先级最低。 受控中断只会在最 ...

主要是想通过不受控的中断实现0中断延迟。
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
发表于 2020-6-22 17:27:58 | 显示全部楼层
eric2013 发表于 2020-6-22 17:05
主要是想通过不受控的中断实现0中断延迟。

老哥 可否详细点 我没听懂 拜托了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2020-6-23 00:19:07 | 显示全部楼层
dyhfaily 发表于 2020-6-22 17:27
老哥 可否详细点 我没听懂 拜托了

专门搞出一个不受控的中断优先级出来,本意就是实现0中断延迟,这里的实现方法就是基于BASEPRI寄存器实现,通过这个寄存器可以仅开关受控中断,而不会开关不受控的中断,这样这些不受控的中断就可以随时响应,是0中断延迟。
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
发表于 2020-6-23 09:11:25 | 显示全部楼层
eric2013 发表于 2020-6-23 00:19
专门搞出一个不受控的中断优先级出来,本意就是实现0中断延迟,这里的实现方法就是基于BASEPRI寄存器实现 ...

这个0中断的意思啊 懂了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 16:25 , Processed in 0.275830 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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