什么是空闲钩子函数?
空闲钩子函数(Idle Hook Function)
- 定义:空闲钩子函数是用户定义的一个回调函数,由 FreeRTOS 在空闲任务的每次循环中调用,允许用户在空闲任务中插入自定义逻辑。
- 作用:
- 用于执行轻量级的后台任务,如状态监测、LED 闪烁或简单的计算。
- 不适合执行复杂或阻塞操作(否则会影响调度器性能)。
与空闲任务的关系
- 空闲任务:是 FreeRTOS 的核心任务,运行无限循环,负责空闲时的系统维护(如清理任务资源)或进入低功耗模式(如 Tickless Idle)。
- 空闲钩子函数:是空闲任务的一个“插件”,在空闲任务的每次循环中调用,允许用户插入自定义逻辑。
空闲钩子函数的内容完全由用户定义,允许插入自定义逻辑,但有一些限制:
- 轻量级操作:钩子函数应避免复杂或耗时操作(如大量计算或阻塞性 I/O),否则可能影响 FreeRTOS 调度性能,延迟其他任务(如你的手环项目中的心率监测或 BLE 通信)。
- 禁止阻塞:不能调用阻塞 API(如 vTaskDelay 或 xSemaphoreTake),因为它运行在空闲任务的上下文中,阻塞会导致调度器无法正常切换任务。