關于調試STM32程序時,某些標志位被調試軟件意外清除的問題
很多朋友都碰到過這樣的問題:在單步調試時始終不能在顯示窗口看到某些標志位的變化,應該設置這些標志位的時候,窗口中卻顯示為0,不少人都錯誤地認為這是芯片的問題。
我們知道,不少STM32外設的狀態寄存器位,可以通過對某些寄存器的讀操作而清除(例如I2C的I2C_SR1中的很多標志位),在調試過程中,每當程序停止在設置的斷點或單步停止時,調試軟件都會自動地讀出所有指定的寄存器和存儲器中的內容,并刷新窗口的顯示,調試軟件的這個讀操作恰好清除了那些標志位,造成了上面描述的現象。
有幾個簡單的辦法解決這個問題:
1)關閉寄存器或存儲器顯示窗口
2)在寄存器或存儲器顯示窗口中不顯示這些敏感的寄存器
3)不要把斷點放在對這些敏感的寄存器位操作的前面,以保證這些寄存器位不被調試軟件意外地操作。
4)看官自己添加~~~~~
評論