<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 代碼調著(zhù)調著(zhù)就失聯(lián)了???

代碼調著(zhù)調著(zhù)就失聯(lián)了???

發(fā)布人:魚(yú)鷹談單片機 時(shí)間:2022-05-23 來(lái)源:工程師 發(fā)布文章

不知道你是否有這樣的體驗:代碼單步調試,調著(zhù)調著(zhù),出現了下面的提示框:

圖片

很多時(shí)候,莫名其妙,一般情況,只能退出調試,再重新進(jìn)入。

一般沒(méi)啥影響,但有的時(shí)候,我們是為了抓 BUG 現場(chǎng)才進(jìn)入的調試模式《BUG 終結者,現場(chǎng)抓獲!|顛覆認知》,一旦因為失聯(lián)導致不能繼續調試,估計得罵娘了(BUG 容易復現還好,下次在來(lái),但是很難復現的話(huà),就麻煩大了)。

那會(huì )是什么導致失聯(lián)了呢?

魚(yú)鷹總結了以下幾種可能:

1、調試器連線(xiàn)(PC 到調試器,調試器到芯片)不正常。

2、MDK 軟件問(wèn)題

3、MDK 工程兼容問(wèn)題

4、看門(mén)狗復位(窗口、獨立看門(mén)狗)


連線(xiàn)問(wèn)題好解決,各種換即可,MDK 軟件問(wèn)題,只能說(shuō)盡量找個(gè)穩定的版本了。另外就是 MDK 工程兼容的問(wèn)題,比如這個(gè)項目開(kāi)始不是你負責的,后來(lái)你入職了,用了另一個(gè)版本的 MDK,再次打開(kāi)這個(gè)工程的時(shí)候,就可能出現問(wèn)題,一般來(lái)說(shuō),這種情況下,不要嫌麻煩,直接新建工程即可(可以看這篇筆記《如何快速更換 MDK 工程?)。


還有一種很容易忽略的可能是,項目代碼開(kāi)啟了看門(mén)狗,單步調試時(shí)間太長(cháng),沒(méi)有及時(shí)喂狗導致復位。

此時(shí),我們又該如何解決呢?這就是本篇筆記的重點(diǎn)。

參考手冊最后面,我們可以看到這個(gè)寄存器 DBGMCU_CR。

圖片

這里我們看看獨立看門(mén)狗這個(gè)位的介紹:

圖片

可以看到,這個(gè)作用就是,當我們進(jìn)入調試狀態(tài)時(shí),看門(mén)狗計數器停止工作。

F103 函數設置如下:


DBGMCU_Config(DBGMCU_IWDG_STOP, ENABLE);

什么意思?就是說(shuō),當我們在單步調試,程序停下來(lái)進(jìn)行分析的時(shí)候,因為設置了該位,就可以讓計數器不工作,這樣一來(lái),即使停止再久的時(shí)間,只要在調試模式下,都不會(huì )因為看門(mén)狗而復位,因為計數器已經(jīng)不工作了,也就不能觸發(fā)復位動(dòng)作了。而一旦退出調試模式,看門(mén)狗繼續正常工作。

這樣也就不會(huì )導致前面說(shuō)的失聯(lián)問(wèn)題,可以讓你專(zhuān)心分析代碼邏輯。


那如果說(shuō),原來(lái)的代碼沒(méi)有考慮這個(gè)點(diǎn),沒(méi)有配置這個(gè)位,咋辦?

如果看門(mén)狗超時(shí)時(shí)間比較長(cháng)(十幾秒以上),你完全可以在進(jìn)入調試模式后,從容打開(kāi)寄存器窗口,手動(dòng)設置該位,這樣臨時(shí)抱佛腳的行為也能起作用。

那如果只有幾秒鐘咋辦?手動(dòng)操作可能根本來(lái)不及,魚(yú)鷹在此再支一招:

使用 MDK 中的 ini 文件,讓其進(jìn)入調試模式的同時(shí),自動(dòng)設置該位,相當方便。

那如果是毫秒級別的呢?自求多福吧,或許 ini 的方法可以解決,或許進(jìn)入調試模式后,在程序運行的時(shí)候(別停?。。。?,先用 MDK 的命令窗口或寄存器窗口設置一下該位,再停止程序運行去分析問(wèn)題。

總之,一定要先把這個(gè)位給設置了再慢慢調試分析,否則,可能調著(zhù)調著(zhù),最終調了一個(gè)寂寞。


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: 單片機

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>