HAL_Delay依赖SysTick中断递增的uwTick,并在循环中比较uwTick与目标值。若在中断上下文调用,且该中断优先级不低于SysTick(或SysTick被屏蔽),SysTick无法抢占执行,uwTick不再更新,循环永不退出,形成死等。即使优先级允许,长延时也会阻塞中断响应。无阻塞微秒延时可用DWT->CYCCNT:先使能DWT(CoreDebug->DEMCR |= TRCENA;DWT->CTRL |= CYCCNTENA),读取起始周期DWT->CYCCNT,按SystemCoreClock换算目标周期数,循环等待(CYCCNT - start) >= ticks。注意CYCCNT为32位,需用无符号减法处理回绕;延时期间关中断时间要短,避免影响实时性;Cortex-M0/M0+无DWT,需改用定时器。