HAL_Delay依赖SysTick中断递增的全局变量uwTick,并在while循环中等待其变化。若在中断上下文中调用,且该中断优先级不低于SysTick(或SysTick被屏蔽),SysTick无法抢占执行,uwTick永不更新,形成死锁;即便优先级较低,长时间忙等也会阻塞其他中断。替代方案:使能DWT->CYCCNT,先置CoreDebug->DEMCR的TRCENA位,再置DWT->CTRL的CYCCNTENA位,用DWT->CYCCNT记录起始周期,按SystemCoreClock换算目标周期数,循环比较差值实现微秒级忙等延时。该延时不受中断屏蔽影响,但仍是忙等,适合短延时;长延时建议用定时器+状态机。注意DWT在部分Cortex-M0/M0+上不可用,且需保证DWT计数器已启动。