在調(diào)試的過程中,使用調(diào)試軟件的寄存器或存儲(chǔ)器顯示窗口,可以很方便地查看外設(shè)寄存器的狀態(tài)。 很多朋友都碰到過這樣的問題:在單步調(diào)試時(shí)始終不能在顯示窗口看到某些標(biāo)志位的變化,應(yīng)該設(shè)置這些標(biāo)志位的時(shí)候,窗口中卻顯示為0,不少人都錯(cuò)誤地認(rèn)為這是芯片的問題。 我們知道,不少STM32外設(shè)的狀態(tài)寄存器位,可以通過對(duì)某些寄存器的讀操作而清除(例如I2C的I2C_SR1中的很多標(biāo)志位),在調(diào)試過程中,每當(dāng)程序停止在設(shè)置的斷點(diǎn)或單步停止時(shí),調(diào)試軟件都會(huì)自動(dòng)地讀出所有指定的寄存器和存儲(chǔ)器中的內(nèi)容,并刷新窗口的顯示,調(diào)試軟件的這個(gè)讀操作恰好清除了那些標(biāo)志位,造成了上面描述的現(xiàn)象。 有幾個(gè)簡(jiǎn)單的辦法解決這個(gè)問題: 1)關(guān)閉寄存器或存儲(chǔ)器顯示窗口 2)在寄存器或存儲(chǔ)器顯示窗口中不顯示這些敏感的寄存器 3)不要把斷點(diǎn)放在對(duì)這些敏感的寄存器位操作的前面,以保證這些寄存器位不被調(diào)試軟件意外地操作。 4)看官自己添加~~~~~ 發(fā)表于 2009/3/16 |