我正在学习FreeRTOS,手册上说中断服务程序(ISR)里不能直接使用 xQueueSend(),而必须使用带FromISR后缀的 xQueueSendFromISR()。
我的理解是,中断需要快进快出,而普通函数可能会引发任务调度。
我想请问一下:
如果我在中断里错误地使用了 xQueueSend(),具体会发生什么?是编译不通过,还是运行时出错?
xQueueSendFromISR() 内部到底做了什么特殊处理,使得它可以在中断中安全使用?
希望能从内核调度和中断上下文的角度解释一下,感谢! |
|