打印

关于用while查询等待单片机内部操作完成

[复制链接]
2577|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hwk612167|  楼主 | 2011-11-16 10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于用while查询等待单片机内部操作完成,有没有失败的可能呢?是否需要设置超时时间,如:
while( FCTL3 & BUSY ); //等待Flash操作完成
while( !(SVSCTL&SVSON) );   //等待SVSON
while(!(ADC10CTL0 & ADC10IFG));     //等待转换结束
等等,是否需要设置一个超时变量u8_time_out,下成这样:
while( !(ADC10CTL0 & ADC10IFG) && (--u8_time_out));

是否有必要???求解:handshake

相关帖子

沙发
ayb_ice| | 2011-11-16 10:43 | 只看该作者
超时控制是必须的,除非硬件上保证循环条件会退出

使用特权

评论回复
板凳
hwk612167|  楼主 | 2011-11-17 07:59 | 只看该作者
等待单片机内部操作的情况

使用特权

评论回复
地板
mugenwon| | 2011-11-17 08:08 | 只看该作者
看情况。我觉得对于一个内部操作,如果他出问题,死循环出不来。即使你有超时跳出措施,但他其实已经坏了或变得不稳定了。就算再上电,他还是会照样犯毛病。有时候这需要更换元件,有时候可以不换,换另一个地址进行操作。对于不会发生大状况的可以不检测,但对于要求高的地方例如高铁那种事就必须处理好。

使用特权

评论回复
5
hwk612167|  楼主 | 2011-11-17 08:59 | 只看该作者
有没有这种可能:
某一时刻受到外界强烈干扰而导致内部操作如写flash、AD转换等完成不了呢?

使用特权

评论回复
6
liang7143| | 2011-11-17 12:22 | 只看该作者
我觉得不管怎么样,超时控制是必须的

使用特权

评论回复
7
yuandm1| | 2011-11-17 17:55 | 只看该作者
单位用的读写flash的程序中是有超时操作的,不过都是0xffff。

使用特权

评论回复
8
hwk612167|  楼主 | 2011-11-17 22:25 | 只看该作者
每个类似的while都加上超时控制,根据是否超时做不同处理,CODE一下多了600多byte

使用特权

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

本版积分规则

个人签名:前进 前进 前进

20

主题

511

帖子

3

粉丝