打印
[MM32硬件]

在中断服务程序中调用会导致任务切换的 FreeRTOS API 函数可能会引发问题

[复制链接]
1311|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxs0026|  楼主 | 2024-5-30 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在中断服务程序中不应该调用可能引起任务切换的 FreeRTOS API 函数,因为中断服务程序结束后,上下文切换必须在任务级别发生。

这是因为在中断服务程序中调用会导致任务切换的 FreeRTOS API 函数可能会引发问题。因为中断服务程序执行完毕后,系统必须回到任务级别的上下文,并且只有任务调度器能够决定下一个要运行的任务。如果在中断服务程序中调用了这些会导致任务切换的 API 函数,那么系统会试图在中断服务程序的上下文中进行任务切换,这可能导致不可预测的结果,例如任务调度器数据结构损坏、死锁等问题。

为了确保系统的稳定性和可靠性,应该遵循以下原则:

在中断服务程序中尽量避免调用 FreeRTOS API 函数,尤其是可能引起任务切换的函数。

如果确实需要在中断服务程序中与任务进行通信或同步操作,应该使用专门为中断上下文设计的 FromISR 版本的 API 函数,如 xSemaphoreGiveFromISR()、xQueueSendFromISR() 等。

在任务级别中处理复杂的逻辑和任务切换,以确保系统的稳定性和可靠性。

通过遵循这些原则,可以确保系统在中断服务程序和任务之间进行正确的协作,并提高系统的性能和可维护性。

使用特权

评论回复
沙发
小小蚂蚁举千斤| | 2024-5-31 22:05 | 只看该作者
中断服务程序结束后,上下文切换必须在任务级别切换

使用特权

评论回复
板凳
ClarkLLOTP| | 2024-6-3 17:36 | 只看该作者
是不能在裸机中断里调用吗

使用特权

评论回复
地板
p0gon9y| | 2024-11-10 22:38 | 只看该作者
在中断服务程序(ISR)中调用会导致任务切换的 FreeRTOS API 函数确实可能会引发问题。FreeRTOS 提供了一些特定的 API 函数,可以在中断服务程序中安全地使用,但并非所有 API 函数都适合在中断上下文中调用。

使用特权

评论回复
5
zhizia4f| | 2024-11-11 21:11 | 只看该作者
中断服务程序通常具有较高的优先级,可以打断正在执行的任务。

使用特权

评论回复
6
w2nme1ai7| | 2024-11-13 14:11 | 只看该作者
FreeRTOS API 函数可以分为两类:这些函数只能在任务上下文中调用,不能在中断服务程序中调用。中断安全函数:这些函数可以在中断服务程序中安全地调用。

使用特权

评论回复
7
tax2r6c| | 2024-11-14 21:21 | 只看该作者
任务通知函数,队列函数,信号量函数,事件组函数,中断安全函数确实要是调用不好会出现问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

1049

帖子

1

粉丝