程序卡死在while(TimingDelay!=0);(keil优化造成的)

   

 

可能原因

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;
}

你可能感兴趣的:(东软MCU,STM32,HR8P506)