在stm32中使用while循環(huán)導(dǎo)致程序卡死
今天在使用stm32的過程中發(fā)現(xiàn)這樣一個問題,程序莫名卡死。
先來看導(dǎo)致卡死的代碼
while(ReadRawRC(CommandReg)&0x10);1
這是我們在程序中經(jīng)常用到的寫法,容易理解,程序的作用的讀出一份數(shù)據(jù),然后判斷他的第4位是否為0,如果為0,則跳出循環(huán),否則程序卡死等待。
也正因?yàn)檫@里的等待,導(dǎo)致讀出的數(shù)據(jù)第4位不為0時程序卡死。
我自己的建議是:
(1)如果程序需要寫成while卡死等待的形式,可以在while循環(huán)后面加一句串口輸出,當(dāng)程序卡死時,如果沒有串口輸出數(shù)據(jù),就證明程序是卡死在了while循環(huán)處
(2)加超時判斷,這是我們單片機(jī)老師在講課的時候提到的,當(dāng)?shù)却臅r間超過一定限度時,很明顯單片機(jī)不能總在這里等待,可以在超時時返回一個錯誤報(bào)告,進(jìn)而讓程序可以執(zhí)行其他的任務(wù)。