總的來講,單片機調試是單片機開發工作必不可少的環節。不管你愿不愿意,調試過程中總會有各種不期而遇的問題出現在我們面前來磨礪我們。這里分享幾點STM32調試過程中與開發工具及IDE有關的幾個常見問題,以供參考。
1、做低功耗調試時連接不上目標板
默認情況下,當MCU進入低功耗模式后,內核時鐘停止工作,調試連接將中斷。不過,通過設置DBGMCU寄存器控制位,即使進入低功耗模式,還是可以進行一定程度的調試。
在保證DGBMCU控制位正確配置前提下,還需注意SWD調試腳沒有被配置為【analog state】模擬輸入狀態。我們在具體應用時為了降低功耗可能會將芯片的包括SWD調試腳在內的GPIO配置為模擬功能,這樣會到導致調試器連接不上情況。此時在連接前先做下復位,有時可能多做幾次復位才連接得上。
當然,上面是指低功耗模式下連接不上目標板的情況。如果是一般性的連接不上,原因就更多了,比方硬件器件、連接線路、驅動程序、用戶代碼本身等,這些要結合具體情況來分析。關于低功耗模式的調試支持,請參考各個系列參考手冊的相關描述。
2、打印輸出失敗
通常我們可以借助于串口助手做打印輸出。如果使用STM32虛擬串口,注意PC端的虛擬串口驅動程序安裝正常。相應軟件包編號是STSW-STM32102。
再就是注意配置UART相關參數配置時,字長是包含了校驗位的。比方8位字長,它是由 7個數據位,1個校驗位組成。還有,VCP不支持字長在8位以下的傳輸。
另外,對于那些基于ARM CORTEX M3/M4/M7內核的STM32芯片,我們可以使用SWO方式做打印輸出。
這里要注意的是:
a、不是所有MCU系列都支持SWO打印輸出;目前僅基于ARM Cortex M3/M4/M7內核的芯片支持;
b、目前只支持SWD模式,不支持JTAG模式;
c、在調試環境里需做適當配置和代碼補充,涉及到DBG_MCU_CR寄存器的控制位。
3、低功耗應用中功耗數據異常
這個原因很多,比方,測量方面的原因,不屬于MCU的功耗也算進來了;有些外設及管腳沒處理好,導致漏電流還在產生; 或者低功耗模式選擇不對,或者進了低功耗模式馬上又醒了而誤測誤判等等。
這里再提醒1點:
設置進入低功耗模式后,確認是否還在調試模式。即檢查DBGMCU寄存器中與低功耗調試配置有關的寄存器控制位,確保關閉了低功耗調試狀態。做低功耗數據測試時,最好不要還連接著調試器,給我們帶來困擾。前不久就有人反映,用別的調試器連接著STM32目標板測得功耗與用STLINK調試器連接著測得功耗大不 一樣,改用STLINK就合理了。
4、在Normal/System Reset模式下SWD連接不上目標板
此時我們可以嘗試換個連接模式,比如Connect Under Reset,或者換個復位模式,比如Hardware Reset 。
如果說借助STLINK,即使使用Connect Under Reset或Hardware Reset方式還連接不上呢?我們可以查看下STLINK的NRST腳與目標板上的MCU的NRST腳是否相連了。如果是nucleo板的話,還需確認下跳線SB12是否為連接狀態。
5、MCO腳無時鐘信號輸出
我們在STM32調試過程中,有時需要引出主時鐘進行輸出監視,即將主時鐘通過MCO腳引出觀察。
要想正確輸出,MCO做正確配置是必須的了。當然用CubeMx配置的話一般不會有啥大問題 。不過有個地方要注意,那個GPIO的輸出速率參數要合適配置,不同STM32系列的GPIO最大可輸出速率在數據手冊上都明確出來了。當MCO輸出時鐘頻率較高以至于超過GPIO的輸出能力時,這時需要考慮先做分頻后再來做觀察。
一般來講,當MCO的輸出頻率在1Mhz以上時,如果觀察到的波形帶有很嚴重的噪聲或者扁平的小幅度信號,甚至看不到輸出的時候,我們可以考慮下是否那個OSPEED參數設置得太小了;如果說看到周期較長、幅度較大帶有明顯上下峰值過沖情形的波形,我們可以考慮下是否那個OSPEED參數設置得太大了。
6、沒法對某些變量進行計算和監控或無法設置斷點
這個原因較多,具體到調試環境,很可能跟你編譯環境的優化等級配置有關。
我們在MCU調試過程中,往往會用到編譯器的優化功能來提升芯片的性能和精簡代碼空間。不過,經過代碼優化,往往可能給我們調試帶來些影響,主要體現在下面幾個方面:
a、 設置斷點方面出現障礙,有些代碼行沒法做斷點的設置;
b、 無法對某些變量進行觀察;
c、 單步調試時出現代碼運行“不連續”的情形,即執行到的地方和我看到的地方不一致;
因此,為了實現有效調試,我們在通過編譯器做優化時要選擇合適的優化等級?;驹瓌t是不影響調試體驗的前提下保障編譯效率。一般來講,在調試時建議將優化等級設置在較低水平。比方KEIL MDK 推薦調試時將優化等級設置在-O1, IAR 推薦調試時將優化等級設置在-None,GCC推薦調試是將優化等級設置在-Og.其實,編譯器的優化等級設置越高,對代碼的規范性要求以及我們對編譯器的了解程度也越高。經常有人代碼優化前程序運行得好好的,代碼優化等級調高好程序功能變得面目全非了。
上面提到的幾個問題及應對措施,都是些可能性的提示或提醒,僅供參考,畢竟調試過程中出現的一個故障現象往往可以映射出多種應用情形及具體原因。
-
mcu
+關注
關注
146文章
17824瀏覽量
360156 -
STM32
+關注
關注
2289文章
11011瀏覽量
362259
原文標題:STM32調試過程中跟工具相關的幾個問題
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
ADS1216芯片調試過程中數據采集一直不對
STM32調試過程中常見的問題有哪些
STM32F103RCT6項目調試過程中遇到了一些問題
電源設計調試過程中的異?,F象分析
變頻器調試過程中的注意事項及其5個因素的介紹
嵌入式開發過程中的一點調試經驗

評論