在stm32中使用while循环导致程序卡死

今天在使用stm32的过程中发现这样一个问题,程序莫名卡死。
先来看导致卡死的代码

在stm32中使用while循环导致程序卡死_第1张图片

    while ( ReadRawRC ( CommandReg ) & 0x10 );

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

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

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

你可能感兴趣的:(STM32)