当前位置:首页 > 单片机 > 单片机
[导读]今天在使用stm32的过程中发现这样一个问题,程序莫名卡死。先来看导致卡死的代码while(ReadRawRC(CommandReg)&0x10);1这是我们在程序中经常用到的写法,容易理解,程序的作用的读出一份数据,然后判断他的第4位是否为

今天在使用stm32的过程中发现这样一个问题,程序莫名卡死。

先来看导致卡死的代码

while(ReadRawRC(CommandReg)&0x10);1

这是我们在程序中经常用到的写法,容易理解,程序的作用的读出一份数据,然后判断他的第4位是否为0,如果为0,则跳出循环,否则程序卡死等待。

也正因为这里的等待,导致读出的数据第4位不为0时程序卡死。

我自己的建议是:
(1)如果程序需要写成while卡死等待的形式,可以在while循环后面加一句串口输出,当程序卡死时,如果没有串口输出数据,就证明程序是卡死在了while循环处
(2)加超时判断,这是我们单片机老师在讲课的时候提到的,当等待的时间超过一定限度时,很明显单片机不能总在这里等待,可以在超时时返回一个错误报告,进而让程序可以执行其他的任务。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭