HAL_Delay依赖SysTick中断递增的uwTick,并在while中轮询uwTick差值。若在中断上下文(优先级不低于SysTick,或SysTick被屏蔽/临界区)调用,uwTick不再更新,循环永不满足,形成死等;即使优先级较低,长延时也会阻塞中断响应。替代方案:使能DWT->CYCCNT(先置CoreDebug->DEMCR的TRCENA,再DWT->CTRL|=1),用DWT->CYCCNT记录起点,按SystemCoreClock换算目标周期数,在循环中比较(unsigned)(DWT->CYCCNT-start)是否达到目标;微秒级延时用忙等即可,但必须保证DWT已使能且系统时钟稳定。若需真正非阻塞,可只记录时间戳返回,由主循环或状态机判断超时,避免在ISR中长时间自旋。注意DWT在Cortex-M3/M4/M7可用,M0/M0+无DWT,需改用TIM。