中断与任务协作

← 返回 MOC | ← 相关原理 | ← 主页


ISR 里应该做什么

  • 读状态。
  • 清中断标志。
  • 记录最小必要信息。
  • 通知任务尽快接手。

ISR 里不应该做什么

  • 长时间循环。
  • 重计算。
  • 大量打印日志。
  • 调用不适合中断上下文的 API。

FromISR 系列 API

  • xQueueSendFromISR()
  • xSemaphoreGiveFromISR()
  • 任务通知相关 FromISR API

这些接口的意义是:让中断在合适的上下文规则下安全地和任务交互。

常见协作模式

  1. 中断捕获到事件。
  2. ISR 把事件或数据交给队列、信号量或任务通知。
  3. 被唤醒的任务在正常任务上下文里做重活。

这一篇要盯住什么

  • ISR 负责抢时间,任务负责做重活。
  • “能不能在中断里直接调这个 API”必须分清。
  • 中断和任务的边界越清晰,系统越好维护。