[应用相关] 在STM32程序中使用软件延时的疑问?求解!!

[复制链接]
3203|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

粉丝
快速回复 在线客服 返回列表 返回顶部