在RTOS中,临界区保护需权衡中断延迟和任务调度。核心策略是:将临界区保护分为两级——对于极短操作(如寄存器读写),直接使用关中断(如`taskENTER_CRITICAL`),但需确保临界区代码极短(<10μs),避免长时间屏蔽中断。对于较长操作,应使用互斥量(Mutex)配合优先级继承,防止低优先级任务持有锁时阻塞高优先级任务,同时避免在临界区内调用阻塞API。更优方案是采用无锁设计(如环形缓冲区)或使用`vTaskSuspendAll`暂停调度器(仅屏蔽任务切换,不屏蔽中断),适用于非中断安全的共享数据。实操建议:优先用互斥量+优先级继承,仅在绝对必要时关中断,并利用`portSET_INTERRUPT_MASK`等硬件级屏蔽,同时通过`traceISR_ENTER`/`traceISR_EXIT`监控中断延迟。
mcuku 阿沐 · 2026-08-27