硬汉嵌入式论坛

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

[FreeRTOS] 带 FromISR后缀的函数有什么用?

[复制链接]

76

主题

237

回帖

465

积分

高级会员

积分
465
发表于 2019-6-6 08:51:15 | 显示全部楼层 |阅读模式
本帖最后由 kokoromi 于 2019-6-6 09:25 编辑

感觉FreeRTOS这一点不太好,为什么要分 带FromISR后缀和不带后缀两个版本,感觉这样很繁琐,有些时候,用户使用了第三方库,并不清楚调用的库函数是不是在中断里,这怎么办?
还有像xxxTakeFromISR这种函数,本来就是阻塞用的,放在中断里是有什么特殊用途吗(或者说,在ISR中调用xxxTakeFromISR这种函数的意义是什么)?

之前用uC,刚开始用这个,不太理解FreeRTOS为啥这么做?

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2019-6-6 09:37:38 | 显示全部楼层
1、不同的处理策略而已,FreeRTOS和RTX都是区分开的的,而uCOS是没有区分的,没区分怎么办,那也得想办法区分开,uCOS的解决办法就是进出中断的时候
调用函数OSIntEnter(); 和 OSIntExit(),异曲同工。

2、区分函数在中断里面还是任务里面即可,调用函数__get_IPSR()
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2019-6-6 11:36:43 | 显示全部楼层
eric2013 发表于 2019-6-6 09:37
1、不同的处理策略而已,FreeRTOS和RTX都是区分开的的,而uCOS是没有区分的,没区分怎么办,那也得想办法区 ...

但是xxxTakeFromISR这种函数,在中断里调用有什么用呢? 中断里不都是调用xxxGiveFromISR吗?不太理解这类函数...
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2019-6-6 11:44:39 | 显示全部楼层
kokoromi 发表于 2019-6-6 11:36
但是xxxTakeFromISR这种函数,在中断里调用有什么用呢? 中断里不都是调用xxxGiveFromISR吗?不太理解这 ...

由于我们习惯了任务里面take,后面可以尝试在中断里面take,特别是有这种需求的事情。

回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2019-6-6 12:42:09 | 显示全部楼层
eric2013 发表于 2019-6-6 11:44
由于我们习惯了任务里面take,后面可以尝试在中断里面take,特别是有这种需求的事情。

谢谢。
不过实在想不出什么情况下会在中断里用take,毕竟中断不能被阻塞,调用了take也是大概率得不到信号量..
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2019-6-6 12:52:56 | 显示全部楼层
kokoromi 发表于 2019-6-6 12:42
谢谢。
不过实在想不出什么情况下会在中断里用take,毕竟中断不能被阻塞,调用了take也是大概率得不到信 ...

中断里面的这个不是阻塞式的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 22:13 , Processed in 0.299564 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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