IAR寫了一個STM8L051的程式,為了使程式模塊化,在定時器中斷中使用了中斷回呼函式,(這里請大家忽略在中斷中呼叫函式浪費時間等問題),但是發現中斷回呼函式中的臨時變數篡改了主程式中的臨時變數,按理說進入中斷的時候主程式的臨時變數應該被壓堆疊了,退出時會恢復臨時變數的值,但是實際加斷點除錯發現主函式的臨時變數還是被篡改了,不知道大家有沒有遇到過類似的問題,請大神指教
,除錯截圖如下
第1個for回圈創建的臨時變數i的值為0

在第1個for回圈和第2個for回圈之間產生了定時器中斷,定時器中斷函式呼叫了回呼函式,在回呼函式中創建了臨時變數i,在整個回呼函式中i的值被加到了3

第2個for回圈的時候i的值應該是1,但此時卻是3,和中斷回呼函式里面的臨時變數i的值一樣,另外,臨時變數的記憶體地址被定義在了0x00,不知道為什么
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/57874.html
標籤:單片機/工控
下一篇:這個電路有點看不懂,求指點
