测量任务切换开销,建议使用硬件定时器(如DWT->CYCCNT)在任务切换钩子函数(vApplicationTaskSwitchHook)中记录时间戳,计算两次切换的差值。注意关闭中断或使用临界区保护测量代码,避免干扰。优化临界区保护粒度,核心是缩短临界区执行时间:仅保护共享资源访问,避免在临界区内调用阻塞函数(如vTaskDelay、队列接收超时)。可使用任务通知(Task Notification)替代二值信号量,其开销更低。若临界区较长,考虑使用互斥量(Mutex)配合优先级继承,或改用无锁设计(如环形缓冲区)。实操建议:先用trace工具(如FreeRTOS+Trace)分析实际切换频率和临界区耗时,再针对性优化。
mcuku 阿沐 · 2026-08-27