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

[复制链接]
 楼主| 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 | 显示全部楼层
看情况。我觉得对于一个内部操作,如果他出问题,死循环出不来。即使你有超时跳出措施,但他其实已经坏了或变得不稳定了。就算再上电,他还是会照样犯毛病。有时候这需要更换元件,有时候可以不换,换另一个地址进行操作。对于不会发生大状况的可以不检测,但对于要求高的地方例如高铁那种事就必须处理好。
 楼主| hwk612167 发表于 2011-11-17 08:59 | 显示全部楼层
有没有这种可能:
某一时刻受到外界强烈干扰而导致内部操作如写flash、AD转换等完成不了呢?
liang7143 发表于 2011-11-17 12:22 | 显示全部楼层
我觉得不管怎么样,超时控制是必须的
yuandm1 发表于 2011-11-17 17:55 | 显示全部楼层
单位用的读写flash的程序中是有超时操作的,不过都是0xffff。
 楼主| hwk612167 发表于 2011-11-17 22:25 | 显示全部楼层
每个类似的while都加上超时控制,根据是否超时做不同处理,CODE一下多了600多byte
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:前进 前进 前进

20

主题

511

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:前进 前进 前进

20

主题

511

帖子

3

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