硬汉嵌入式论坛

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

[FreeRTOS] 为什么RTOS的中断中不能调用可能发生阻塞的API???

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2020-4-16 16:21:25 | 显示全部楼层 |阅读模式
为什么RTOS的中断中不能调用可能发生阻塞的API???
有没有大神讲解一下原因???
与MSP和PSP有关吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2020-4-16 17:34:32 | 显示全部楼层
这就涉及到一个本质的问题,为什么要用中断,中断里面要执行的都是安全关键功能,需要实时性。
你在中断里面卡一个阻塞式的,导致其他任务和优先级比较低的中断长时间得不到执行。




回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2020-4-17 17:32:05 | 显示全部楼层
硬汉哥,可能我没表述好
我想问的是,freeRTOS中断里为什么必须要用xxxxReceiveFromISR的API,不能用普通的API
普通的API有一个timeout参数
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2020-4-17 17:38:38 | 显示全部楼层
jinhongwei 发表于 2020-4-17 17:32
硬汉哥,可能我没表述好
我想问的是,freeRTOS中断里为什么必须要用xxxxReceiveFromISR的API,不能用普通 ...

一个重要原因是方便中断级任务切换,所以两种代码实现上有所不同。

因为在中断里面执行会有将一些任务恢复到就绪态的情况,退出中断时要执行当前就绪的最高优先级任务
回复

使用道具 举报

210

主题

1043

回帖

1683

积分

至尊会员

More we do, more we can do.

积分
1683
发表于 2020-4-20 22:45:45 | 显示全部楼层
区分了中断调用函数可以简化,不用触发任务切换,由中断退出调用。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 14:19 , Processed in 0.162689 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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