打印
[应用相关]

sysTick不准确?不知道什么地方出问题了~ 请教高手

[复制链接]
2019|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wu0232|  楼主 | 2008-11-16 20:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天尝试用sysTick来构造10ms的延时函数Delay(),但是似乎严重不准确,我Delay(500),应该得到5s的延时,但我掐着表,2秒钟就从串口发出数据了。奇怪。高手多多指教~~




systick的设置
void SysTick_Config(void)
{
  /* Configure HCLK clock as SysTick clock source */
  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);//HLCK is 72MHz,so the source of sysTick is 72MHz.

  SysTick_SetReload(720000);
// 每tick一次,过去 1/72M 秒; 达到720,000次,则过去0.01s(10ms). 
  /* Enable the SysTick Interrupt */
  SysTick_ITConfig(ENABLE);

}


中断处理函数
void SysTickHandler(void)
{
  if(TimingDelay != 0)
      TimingDelay--;
}


delay函数
void Delay(u32 param)
{
    /* Enable the SysTick Counter */
      SysTick_CounterCmd(SysTick_Counter_Enable);
      TimingDelay = param;
      
      while(TimingDelay != 0)
      {
      }
      
      SysTick_CounterCmd(SysTick_Counter_Disable);
      SysTick_CounterCmd(SysTick_Counter_Clear);
      
  
}

沙发
wu0232|  楼主 | 2008-11-16 20:57 | 只看该作者

找到原因了.原来是自己不仔细

TimingDelay我定义为 uv8了 ~

晕.

改成uv32正常了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

130

帖子

1

粉丝