怎么在一个地方等待,条件满足了不能向下运行

[复制链接]
 楼主| handlike 发表于 2011-5-26 21:29 | 显示全部楼层 |阅读模式
怎么在一个地方等待,条件满足了不能向下运行。

如    Delay_Time=0;
     while(Delay_Time<100);
       ..........
      ...........

我在时钟中断(SYSTICK)中设置了Delay_Time每进入一次其加1,仿真时总是停在
while(Delay_Time<100);这一行,打断可以看出Delay_Time大于100了,可还是停在这一行不向下运行。但是如果这样就可以了。
  while(Delay_Time<100)
  {  
    delay(10);
   } 

其中 delay()为一个延时过程。在51中前面的方法在while原地等是可以的,可在STM32中就不灵了呢?哪位给个解答,谢谢。
songbangyan 发表于 2011-5-27 10:52 | 显示全部楼层
Delay_Time在什么位置发生变化呢?
sjnh 发表于 2011-5-27 11:02 | 显示全部楼层
中断中操作的是Delay_Time, 而while中操作的只是临时变量Delay_Time的临时变量,你需要用volatile修饰,
当然还有中断冲突的可能
 楼主| handlike 发表于 2011-5-27 17:17 | 显示全部楼层
声明一下。Delay_Time是外部变量,可以在同一工程内不同C文件间对其访问。
CC2530 发表于 2011-5-27 17:46 | 显示全部楼层
  1. volatile unsigned int Delay_Time;
 楼主| handlike 发表于 2011-5-28 08:44 | 显示全部楼层
经过确认不是楼上提到的变量易失性被优化掉的问题(这方法试过了),在原地等后面加一个小的delay();就可以向下运行。不知你们用什么方法等待一个条件满足后再向下运行的?
zchong 发表于 2011-5-28 09:00 | 显示全部楼层
实在不行看汇编,就是循环那几行代码
zchong 发表于 2011-5-28 09:01 | 显示全部楼层
最好贴个完整的代码,给大家看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:男怕入错行,女怕嫁错郎。 我是来灌水的,顺便采点蘑菇。

12

主题

662

帖子

2

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