STM32 KEIL if滿足條件卻無法進(jìn)入
2022-12-28 15:30 作者:m蛋蛋發(fā)番茄 | 我要投稿
????今天調(diào)試的時候發(fā)現(xiàn)一個很不能理解的事情,if語句滿足條件卻無法進(jìn)入,目前已經(jīng)成功解決,在這里自己記錄一下,也希望能夠幫助更多的同學(xué)。

通過分析最上面的匯編,發(fā)現(xiàn)沒有執(zhí)行判斷。個人猜測:應(yīng)該是編譯器認(rèn)為此處是死循環(huán),沒有考慮中斷置1的情況給優(yōu)化了,這里給出兩種解決方法,推薦使用第二種。
解決方法1(不推薦):


????用此方法的話,把代碼發(fā)給其他人進(jìn)行編譯,就需要別人也要對編譯器進(jìn)行同樣的設(shè)置,才不會出現(xiàn)這樣的問題。
解決方法2:
????所用變量定義時加入關(guān)鍵字:volatile
????

????重新編譯并燒錄進(jìn)ARM發(fā)現(xiàn)能夠正常執(zhí)行程序,解決完問題了。
????有更好的解決方法也可以進(jìn)行交流討論。
標(biāo)簽: