打印
[应用相关]

在STM32程序中使用软件延时的疑问?求解!!

[复制链接]
2384|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
网上男人|  楼主 | 2009-4-16 15:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠:
   小弟在使用STM32做一个通迅时序的东东,为配合相应的时序要求,要加一些软件延时处理.因为延时的精度要求不高,所以就不想用滴答定时器或其他定时器来做这一块,只是想简单的用for(i=delay_count;i>0;i--);来实现.但是在测试这段程序到底延时多长时间时,问题就出来了.我是用下面的语句测试的:
我的时钟为48MHz:
while(1)
{
      GPIO_WriteBit(GPIOB,GPIO_Pin_5,Bit_SET);
      for(i=100;i>0;i--); 
      GPIO_WriteBit(GPIOB,GPIO_Pin_5,Bit_RESET);
      for(i=100;i>0;i--); 
}
用示波器看差不多2个us周期,后来将for循环去掉后发现IO的输出周期居然还是差不多二个us.真是搞糊涂啦!!
沙发
网上男人|  楼主 | 2009-4-16 17:28 | 只看该作者

怎么没有朋友肯给予指点呢?>

 是不是我没描述清楚呀

使用特权

评论回复
板凳
香水城| | 2009-4-16 18:09 | 只看该作者

需要使用volatile

否则编译器会优化掉那个小循环。

使用特权

评论回复
地板
starm| | 2009-4-16 19:33 | 只看该作者

还是建议用定时器

使用特权

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

本版积分规则

3

主题

5

帖子

0

粉丝