当前位置: 代码迷 >> 单片机 >> stm32系统时钟有关问题
  详细解决方案

stm32系统时钟有关问题

热度:139   发布时间:2016-04-28 14:55:58.0
stm32系统时钟问题
我在一个工程运行完全正常,但是我把程序拷贝到另一个工程运行不正常,我发现了一个不同点:
延时函数:
void Delaytime(uint32_t nTime)
{
  TimeDelay = nTime;
  while(TimeDelay != 0);

}
系统时钟中断:
void SysTick_Handler(void)
{
   if(TimeDelay>0)
   {
     TimeDelay--;
   }
   else
   {
     TimeDelay=0;
   }
}
主程序:
void main()
{
    Delaytime(100);
    ...........
    ...........
}

运行不正常的工程,在Delaytime(100);就没有往下执行了,我检测过很多次,程序一模一样,但是在系统时钟中断里面出了问题,我不知道为什么,系统时钟的配置也是一样的,库也是一样的,我找不到原因,求各位大神帮忙。

------解决方案--------------------
经典问题,编译器优化掉了
解决:声明TimeDelay 前面加 volatile 
在这坛里我就已经回答好几次了