打印

关于用系统时钟延时的问题

[复制链接]
2214|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dong130300|  楼主 | 2012-5-1 18:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.请问systick库函数的定义在哪啊,有人说是在misc中定义的,但是我在里面看了
只有这个定义void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)
{
  /* Check the parameters */
  assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
  if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
  {
    SysTick->CTRL |= SysTick_CLKSource_HCLK;
  }
  else
  {
    SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
  }
}其他的没有啊

2.然后我又用了直接操作寄存器的方法
void delay_ms(u16 nms)
{         
u32 temp;     
SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)
SysTick->VAL =0x00;           //清空计数器
SysTick->CTRL=0x01 ;          //开始倒数  
do
{
  temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
SysTick->CTRL=0x00;       //关闭计数器
SysTick->VAL =0X00;       //清空计数器        
}   
可是程序死在temp=SysTick->CTRL;这里,有什么解决办法吗,请大家帮帮忙啊,我在写程序的时候常会遇到程序死在某处的问题,我该怎么找到解决问题的方法啊
沙发
acgean| | 2012-5-2 09:27 | 只看该作者
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   

我怀疑这个表达式的写法有问题, 最好把括号都写全咯

使用特权

评论回复
板凳
763375164| | 2013-11-17 16:41 | 只看该作者
额 我来看看

使用特权

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

本版积分规则

4

主题

35

帖子

0

粉丝