可能原因
1、声明TimingDelay时要使用volatile修饰(keil编译前对TimingDelay进行了默认优化造成的)
2、也可能是main中没有调用systick_init();
void Delay_ms(__IO u32 nTime)
{
TimingDelay = nTime;
if (SysTick_Config(SystemCoreClock / 1000)) //1us中断一次
{
while (1);
}
// 使能滴答定时器
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
while(TimingDelay != 0);
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}