0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺析STM32調(diào)試過程中的幾個(gè)相關(guān)問題

茶話MCU ? 來源:cc ? 2019-01-21 13:50 ? 次閱讀

總的來講,單片機(jī)調(diào)試是單片機(jī)開發(fā)工作必不可少的環(huán)節(jié)。不管你愿不愿意,調(diào)試過程中總會(huì)有各種不期而遇的問題出現(xiàn)在我們面前來磨礪我們。這里分享幾點(diǎn)STM32調(diào)試過程中與開發(fā)工具及IDE有關(guān)的幾個(gè)常見問題,以供參考。

1、做低功耗調(diào)試時(shí)連接不上目標(biāo)板

默認(rèn)情況下,當(dāng)MCU進(jìn)入低功耗模式后,內(nèi)核時(shí)鐘停止工作,調(diào)試連接將中斷。不過,通過設(shè)置DBGMCU寄存器控制位,即使進(jìn)入低功耗模式,還是可以進(jìn)行一定程度的調(diào)試。

在保證DGBMCU控制位正確配置前提下,還需注意SWD調(diào)試腳沒有被配置為【analog state】模擬輸入狀態(tài)。我們?cè)诰唧w應(yīng)用時(shí)為了降低功耗可能會(huì)將芯片的包括SWD調(diào)試腳在內(nèi)的GPIO配置為模擬功能,這樣會(huì)到導(dǎo)致調(diào)試器連接不上情況。此時(shí)在連接前先做下復(fù)位,有時(shí)可能多做幾次復(fù)位才連接得上。

當(dāng)然,上面是指低功耗模式下連接不上目標(biāo)板的情況。如果是一般性的連接不上,原因就更多了,比方硬件器件、連接線路、驅(qū)動(dòng)程序、用戶代碼本身等,這些要結(jié)合具體情況來分析。關(guān)于低功耗模式的調(diào)試支持,請(qǐng)參考各個(gè)系列參考手冊(cè)的相關(guān)描述。

2、打印輸出失敗

通常我們可以借助于串口助手做打印輸出。如果使用STM32虛擬串口,注意PC端的虛擬串口驅(qū)動(dòng)程序安裝正常。相應(yīng)軟件包編號(hào)是STSW-STM32102。

再就是注意配置UART相關(guān)參數(shù)配置時(shí),字長是包含了校驗(yàn)位的。比方8位字長,它是由 7個(gè)數(shù)據(jù)位,1個(gè)校驗(yàn)位組成。還有,VCP不支持字長在8位以下的傳輸。

另外,對(duì)于那些基于ARM CORTEX M3/M4/M7內(nèi)核的STM32芯片,我們可以使用SWO方式做打印輸出。

這里要注意的是:

a、不是所有MCU系列都支持SWO打印輸出;目前僅基于ARM Cortex M3/M4/M7內(nèi)核的芯片支持;

b、目前只支持SWD模式,不支持JTAG模式;

c、在調(diào)試環(huán)境里需做適當(dāng)配置和代碼補(bǔ)充,涉及到DBG_MCU_CR寄存器的控制位。

3、低功耗應(yīng)用中功耗數(shù)據(jù)異常

這個(gè)原因很多,比方,測(cè)量方面的原因,不屬于MCU的功耗也算進(jìn)來了;有些外設(shè)及管腳沒處理好,導(dǎo)致漏電流還在產(chǎn)生; 或者低功耗模式選擇不對(duì),或者進(jìn)了低功耗模式馬上又醒了而誤測(cè)誤判等等。

這里再提醒1點(diǎn):

設(shè)置進(jìn)入低功耗模式后,確認(rèn)是否還在調(diào)試模式。即檢查DBGMCU寄存器中與低功耗調(diào)試配置有關(guān)的寄存器控制位,確保關(guān)閉了低功耗調(diào)試狀態(tài)。做低功耗數(shù)據(jù)測(cè)試時(shí),最好不要還連接著調(diào)試器,給我們帶來困擾。前不久就有人反映,用別的調(diào)試器連接著STM32目標(biāo)板測(cè)得功耗與用STLINK調(diào)試器連接著測(cè)得功耗大不 一樣,改用STLINK就合理了。

4、在Normal/System Reset模式下SWD連接不上目標(biāo)板

此時(shí)我們可以嘗試換個(gè)連接模式,比如Connect Under Reset,或者換個(gè)復(fù)位模式,比如Hardware Reset 。

如果說借助STLINK,即使使用Connect Under Reset或Hardware Reset方式還連接不上呢?我們可以查看下STLINK的NRST腳與目標(biāo)板上的MCU的NRST腳是否相連了。如果是nucleo板的話,還需確認(rèn)下跳線SB12是否為連接狀態(tài)。

5、MCO腳無時(shí)鐘信號(hào)輸出

我們?cè)赟TM32調(diào)試過程中,有時(shí)需要引出主時(shí)鐘進(jìn)行輸出監(jiān)視,即將主時(shí)鐘通過MCO腳引出觀察。

要想正確輸出,MCO做正確配置是必須的了。當(dāng)然用CubeMx配置的話一般不會(huì)有啥大問題 。不過有個(gè)地方要注意,那個(gè)GPIO的輸出速率參數(shù)要合適配置,不同STM32系列的GPIO最大可輸出速率在數(shù)據(jù)手冊(cè)上都明確出來了。當(dāng)MCO輸出時(shí)鐘頻率較高以至于超過GPIO的輸出能力時(shí),這時(shí)需要考慮先做分頻后再來做觀察。

一般來講,當(dāng)MCO的輸出頻率在1Mhz以上時(shí),如果觀察到的波形帶有很嚴(yán)重的噪聲或者扁平的小幅度信號(hào),甚至看不到輸出的時(shí)候,我們可以考慮下是否那個(gè)OSPEED參數(shù)設(shè)置得太小了;如果說看到周期較長、幅度較大帶有明顯上下峰值過沖情形的波形,我們可以考慮下是否那個(gè)OSPEED參數(shù)設(shè)置得太大了。

6、沒法對(duì)某些變量進(jìn)行計(jì)算和監(jiān)控或無法設(shè)置斷點(diǎn)

這個(gè)原因較多,具體到調(diào)試環(huán)境,很可能跟你編譯環(huán)境的優(yōu)化等級(jí)配置有關(guān)。

我們?cè)贛CU調(diào)試過程中,往往會(huì)用到編譯器的優(yōu)化功能來提升芯片的性能和精簡(jiǎn)代碼空間。不過,經(jīng)過代碼優(yōu)化,往往可能給我們調(diào)試帶來些影響,主要體現(xiàn)在下面幾個(gè)方面:

a、 設(shè)置斷點(diǎn)方面出現(xiàn)障礙,有些代碼行沒法做斷點(diǎn)的設(shè)置;

b、 無法對(duì)某些變量進(jìn)行觀察;

c、 單步調(diào)試時(shí)出現(xiàn)代碼運(yùn)行“不連續(xù)”的情形,即執(zhí)行到的地方和我看到的地方不一致;

因此,為了實(shí)現(xiàn)有效調(diào)試,我們?cè)谕ㄟ^編譯器做優(yōu)化時(shí)要選擇合適的優(yōu)化等級(jí)?;驹瓌t是不影響調(diào)試體驗(yàn)的前提下保障編譯效率。一般來講,在調(diào)試時(shí)建議將優(yōu)化等級(jí)設(shè)置在較低水平。比方KEIL MDK 推薦調(diào)試時(shí)將優(yōu)化等級(jí)設(shè)置在-O1, IAR 推薦調(diào)試時(shí)將優(yōu)化等級(jí)設(shè)置在-None,GCC推薦調(diào)試是將優(yōu)化等級(jí)設(shè)置在-Og.其實(shí),編譯器的優(yōu)化等級(jí)設(shè)置越高,對(duì)代碼的規(guī)范性要求以及我們對(duì)編譯器的了解程度也越高。經(jīng)常有人代碼優(yōu)化前程序運(yùn)行得好好的,代碼優(yōu)化等級(jí)調(diào)高好程序功能變得面目全非了。

上面提到的幾個(gè)問題及應(yīng)對(duì)措施,都是些可能性的提示或提醒,僅供參考,畢竟調(diào)試過程中出現(xiàn)的一個(gè)故障現(xiàn)象往往可以映射出多種應(yīng)用情形及具體原因。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17893

    瀏覽量

    361891
  • STM32
    +關(guān)注

    關(guān)注

    2291

    文章

    11019

    瀏覽量

    363029

原文標(biāo)題:STM32調(diào)試過程中跟工具相關(guān)的幾個(gè)問題

文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    為什么nulink會(huì)在調(diào)試過程中時(shí)不時(shí)的中斷?

    為啥nulink 會(huì)在調(diào)試過程中時(shí)不時(shí)的中斷?是不是要設(shè)置什么?
    發(fā)表于 01-17 06:52

    ADS1216芯片調(diào)試過程中數(shù)據(jù)采集一直不對(duì)

    有誰用過ADS1216這顆芯片啊,在調(diào)試過程中數(shù)據(jù)采集一直不對(duì),不知道該如何配置它寄存器,具體怎么操作的,誰有demo或相關(guān)的例子程序???
    發(fā)表于 02-27 14:42

    AD芯片在調(diào)試過程中遇到的問題,應(yīng)該怎么解決?

    AD芯片在調(diào)試過程中遇到的問題,應(yīng)該怎么解決?一款TI/國半的超高速ADC調(diào)試經(jīng)驗(yàn)分享
    發(fā)表于 04-09 06:41

    為什么你的示波器抓不到調(diào)試過程中的異常信號(hào)呢?

    如何讓您在調(diào)試異常信號(hào)一覽無余呢?為什么你的示波器抓不到調(diào)試過程中的異常信號(hào)呢?
    發(fā)表于 04-29 06:27

    STM32調(diào)試過程中常見的問題有哪些

    STM32調(diào)試過程中常見的問題及解決方法一、 在“Debug選項(xiàng)卡”下設(shè)置好仿真器的類型后,下載程序時(shí)卻提示“No ULINK Device found.” 解決辦法: Keil MDK默認(rèn)
    發(fā)表于 08-06 06:12

    STM32F103RCT6項(xiàng)目調(diào)試過程中遇到了一些問題

    STM32F103RCT6項(xiàng)目調(diào)試過程中遇到了一些問題,現(xiàn)在總結(jié)記錄一下,以留后用。程序經(jīng)過調(diào)試沒有問題,所有問題都可以說是硬件問題。出現(xiàn)的主要問題可以分為以下幾類:電源問題、時(shí)鐘問題、焊接問題。
    發(fā)表于 08-11 08:49

    記錄一次STM32H743 CANFD調(diào)試過程中的一次BUG

    記錄一次STM32H743 CANFD調(diào)試過程中的一次BUG
    發(fā)表于 08-13 06:30

    STM32的CAN總線調(diào)試過程中的一些小總結(jié)

    調(diào)試過程中的一些小總結(jié)
    發(fā)表于 08-19 06:06

    STM32調(diào)試過程中頭哪些常見的問題

    STM32調(diào)試過程中頭哪些常見的問題?怎樣去解決這些問題呢?
    發(fā)表于 11-03 06:42

    電源設(shè)計(jì)調(diào)試過程中的異常現(xiàn)象分析

    調(diào)試過程中所看到的一些異?,F(xiàn)象,以及后來的解決辦法。其實(shí)很多工程師認(rèn)為設(shè)計(jì)電源是非常重經(jīng)驗(yàn)的一門技術(shù),要見多識(shí)廣。這種經(jīng)
    發(fā)表于 10-09 10:49 ?1813次閱讀

    變頻器調(diào)試過程中的注意事項(xiàng)及其5個(gè)因素的介紹

    變頻器的調(diào)試工作相對(duì)較復(fù)雜,一般設(shè)備使用廠家很難獨(dú)立完成,基本上都會(huì)要求變頻器生產(chǎn)廠家來協(xié)助其配合完成整個(gè)設(shè)備的調(diào)試工作。所以在變頻器的調(diào)試過程中,不論是使用廠家還是生產(chǎn)廠家都要考慮和注意這些
    發(fā)表于 11-01 09:00 ?2次下載

    單片機(jī)調(diào)試過程中調(diào)試組件導(dǎo)致的問題

    單片機(jī)調(diào)試過程中,經(jīng)常會(huì)遇到類似第3只眼的問題。何謂第3只眼呢?
    的頭像 發(fā)表于 12-30 17:12 ?7636次閱讀
    單片機(jī)<b class='flag-5'>調(diào)試過程中</b>的<b class='flag-5'>調(diào)試</b>組件導(dǎo)致的問題

    嵌入式開發(fā)過程中的一點(diǎn)調(diào)試經(jīng)驗(yàn)

    嵌入式開發(fā)過程中的一點(diǎn)調(diào)試經(jīng)驗(yàn)嵌入式開發(fā)最麻煩的在現(xiàn)場(chǎng)調(diào)試過程中或?qū)嶋H運(yùn)營過程中出現(xiàn)問題很難定位。我在實(shí)際開發(fā)過程中一點(diǎn)經(jīng)驗(yàn)分享給大家嵌入式
    發(fā)表于 11-02 18:06 ?15次下載
    嵌入式開發(fā)<b class='flag-5'>過程中</b>的一點(diǎn)<b class='flag-5'>調(diào)試</b>經(jīng)驗(yàn)

    電磁流量計(jì)調(diào)試過程中存在的問題以及解決措施

    對(duì)流量計(jì)內(nèi)部設(shè)置參數(shù)進(jìn)行仔細(xì)檢查,還需要調(diào)試顯示數(shù)據(jù)情況和信號(hào)反饋情況,查看它們是否處于正常運(yùn)行狀態(tài)下。接下來就詳細(xì)介紹電磁流量計(jì)調(diào)試過程中存在的問題以及解決措施。
    的頭像 發(fā)表于 10-27 09:08 ?1724次閱讀

    STMCU應(yīng)用過程中與電源相關(guān)的案例分享

    我們?cè)趶氖?b class='flag-5'>STM32單片機(jī)的應(yīng)用開發(fā)及調(diào)試過程中,往往會(huì)碰到各類異常。其中有不少比例的問題跟電源有關(guān)。
    的頭像 發(fā)表于 08-04 14:52 ?826次閱讀
    STMCU應(yīng)用<b class='flag-5'>過程中</b>與電源<b class='flag-5'>相關(guān)</b>的案例分享

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品