lxs0026 发表于 2024-5-30 14:18

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

在中断服务程序中不应该调用可能引起任务切换的 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 函数都适合在中断上下文中调用。

zhizia4f 发表于 2024-11-11 21:11

中断服务程序通常具有较高的优先级,可以打断正在执行的任务。

w2nme1ai7 发表于 2024-11-13 14:11

FreeRTOS API 函数可以分为两类:这些函数只能在任务上下文中调用,不能在中断服务程序中调用。中断安全函数:这些函数可以在中断服务程序中安全地调用。

tax2r6c 发表于 2024-11-14 21:21

任务通知函数,队列函数,信号量函数,事件组函数,中断安全函数确实要是调用不好会出现问题

t1ngus4 发表于 2024-11-15 20:11

避免在中断服务程序中调用可能导致任务切换的 API 函数:这些函数可能会导致任务切换,从而引发不可预知的行为。

ex7s4 发表于 2024-11-16 07:47

使用中断安全函数:如果需要在中断服务程序中进行任务间通信或同步操作,应使用中断安全函数。

lix1yr 发表于 2024-11-16 08:48

最小化中断服务程序的执行时间:中断服务程序应尽可能快地执行,以减少对系统响应时间的影响。

d1ng2x 发表于 2024-11-16 09:11

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

lamanius 发表于 2024-11-16 10:44

为了避免这些问题,应避免在中断服务程序中调用这些函数,并使用中断安全函数进行任务间通信和同步操作。通过遵循这些建议,可以确保系统的稳定性和可靠性。
页: [1]
查看完整版本: 在中断服务程序中调用会导致任务切换的 FreeRTOS API 函数可能会引发问题