老师,队列函数中带ISR&不带ISR的有何区别,各自适用于什么使用场景

🔍 溯源 ✍️ Jack | 📅 2024-10-08 | 👍 0 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/FreeRTOS #技术/队列 #技术/中断 #质量/普通

原帖 | Jack | 2024-10-08 09:49 | 👍0 | 阅读约1

老师,队列函数中带ISR&不带ISR的有何区别,各自适用于什么使用场景?

A:这里涉及所谓线程安全的内容
使用场景:不带fromisr的API函数在普通代码段中使用,带fromisr的API函数在中断服务程序中使用(但是也只能在FreeRTOS可管理的中断中调用)
区别:
1. 带FromISR的api不会阻塞,而是马上返回(中断不是任务,不能阻塞)
2. 会唤醒别的任务,但不会马上进行上下文切换(目前在中断中,即使切换了也不会运行,浪费性能)
概括:带FromISR的api被设计为在中断中使用,因此具有更极致的性能要求以保证线程安全,为此把正常任务需要的阻塞等功能删除了


相关笔记