根因:HAL_Delay依赖SysTick中断递增的uwTick,并在循环中调用HAL_GetTick()轮询等待。若在中断上下文中调用,且该中断优先级不低于SysTick(默认最低优先级,数值最大),SysTick无法抢占,uwTick停止更新,循环永不退出;即使优先级低于SysTick,长时间忙等也会阻塞同级及更低优先级中断,破坏实时性。替代方案对比:1)DWT周期计数器忙等:使能DWT->CYCCNT,按CPU主频换算延时,不依赖中断,精度高,但仍是忙等,仅适合短延时;2)硬件定时器单次延时:配置TIM并轮询更新标志,精度高、可长延时,但占用外设资源;3)基于中断的异步延时(定时器中断+状态机/回调):不阻塞CPU,适合长延时与低功耗,但实现复杂、有中断开销。实操建议:中断内延时控制在几十微秒内优先用DWT;长延时改为状态机或任务通知,避免在ISR中阻塞。