在stm32中使用while循环导致程序卡死
扫描二维码
随时随地手机看文章
今天在使用stm32的过程中发现这样一个问题,程序莫名卡死。
先来看导致卡死的代码
while(ReadRawRC(CommandReg)&0x10);1
这是我们在程序中经常用到的写法,容易理解,程序的作用的读出一份数据,然后判断他的第4位是否为0,如果为0,则跳出循环,否则程序卡死等待。
也正因为这里的等待,导致读出的数据第4位不为0时程序卡死。
我自己的建议是:
(1)如果程序需要写成while卡死等待的形式,可以在while循环后面加一句串口输出,当程序卡死时,如果没有串口输出数据,就证明程序是卡死在了while循环处
(2)加超时判断,这是我们单片机老师在讲课的时候提到的,当等待的时间超过一定限度时,很明显单片机不能总在这里等待,可以在超时时返回一个错误报告,进而让程序可以执行其他的任务。