不知道你是否有這樣的體驗(yàn):代碼單步調(diào)試,調(diào)著調(diào)著,出現(xiàn)了下面的提示框:

很多時(shí)候,莫名其妙,一般情況,只能退出調(diào)試,再重新進(jìn)入。
一般沒啥影響,但有的時(shí)候,我們是為了抓 BUG 現(xiàn)場才進(jìn)入的調(diào)試模式,一旦因?yàn)槭?lián)導(dǎo)致不能繼續(xù)調(diào)試,估計(jì)得罵娘了(BUG 容易復(fù)現(xiàn)還好,下次在來,但是很難復(fù)現(xiàn)的話,就麻煩大了)。
那會(huì)是什么導(dǎo)致失聯(lián)了呢?
總結(jié)了以下幾種可能:
1、調(diào)試器連線(PC 到調(diào)試器,調(diào)試器到芯片)不正常。
2、MDK軟件問題
3、MDK 工程兼容問題
4、看門狗復(fù)位(窗口、獨(dú)立看門狗)
連線問題好解決,各種換即可,MDK 軟件問題,只能說盡量找個(gè)穩(wěn)定的版本了。另外就是 MDK 工程兼容的問題,比如這個(gè)項(xiàng)目開始不是你負(fù)責(zé)的,后來你入職了,用了另一個(gè)版本的 MDK,再次打開這個(gè)工程的時(shí)候,就可能出現(xiàn)問題,一般來說,這種情況下,不要嫌麻煩,直接新建工程即可。
還有一種很容易忽略的可能是,項(xiàng)目代碼開啟了看門狗,單步調(diào)試時(shí)間太長,沒有及時(shí)喂狗導(dǎo)致復(fù)位。
此時(shí),我們又該如何解決呢?這就是本篇筆記的重點(diǎn)。
參考手冊最后面,我們可以看到這個(gè)寄存器DBGMCU_CR。

這里我們看看獨(dú)立看門狗這個(gè)位的介紹:

可以看到,這個(gè)作用就是,當(dāng)我們進(jìn)入調(diào)試狀態(tài)時(shí),看門狗計(jì)數(shù)器停止工作。
F103 函數(shù)設(shè)置如下:
DBGMCU_Config(DBGMCU_IWDG_STOP, ENABLE);
什么意思?就是說,當(dāng)我們在單步調(diào)試,程序停下來進(jìn)行分析的時(shí)候,因?yàn)樵O(shè)置了該位,就可以讓計(jì)數(shù)器不工作,這樣一來,即使停止再久的時(shí)間,只要在調(diào)試模式下,都不會(huì)因?yàn)榭撮T狗而復(fù)位,因?yàn)橛?jì)數(shù)器已經(jīng)不工作了,也就不能觸發(fā)復(fù)位動(dòng)作了。而一旦退出調(diào)試模式,看門狗繼續(xù)正常工作。
這樣也就不會(huì)導(dǎo)致前面說的失聯(lián)問題,可以讓你專心分析代碼邏輯。
那如果說,原來的代碼沒有考慮這個(gè)點(diǎn),沒有配置這個(gè)位,咋辦?
如果看門狗超時(shí)時(shí)間比較長(十幾秒以上),你完全可以在進(jìn)入調(diào)試模式后,從容打開寄存器窗口,手動(dòng)設(shè)置該位,這樣臨時(shí)抱佛腳的行為也能起作用。
那如果只有幾秒鐘咋辦?手動(dòng)操作可能根本來不及,魚鷹在此再支一招:
使用 MDK 中的 ini 文件,讓其進(jìn)入調(diào)試模式的同時(shí),自動(dòng)設(shè)置該位,相當(dāng)方便。
那如果是毫秒級(jí)別的呢?自求多福吧,或許 ini 的方法可以解決,或許進(jìn)入調(diào)試模式后,在程序運(yùn)行的時(shí)候(別停?。。。?,先用 MDK 的命令窗口或寄存器窗口設(shè)置一下該位,再停止程序運(yùn)行去分析問題。
總之,一定要先把這個(gè)位給設(shè)置了再慢慢調(diào)試分析,否則,可能調(diào)著調(diào)著,最終調(diào)了一個(gè)寂寞。
END 審核編輯 :李倩
-
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2321瀏覽量
98629 -
代碼
+關(guān)注
關(guān)注
30文章
4977瀏覽量
74434 -
調(diào)試器
+關(guān)注
關(guān)注
1文章
329瀏覽量
25225
原文標(biāo)題:代碼調(diào)著調(diào)著就失聯(lián)了???
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
從“失聯(lián)”到“熱聊”:EtherNet/IP轉(zhuǎn)Modbus RTU,激活灌裝線“神經(jīng)中樞”
永磁電機(jī)失磁有什么表現(xiàn)?及如何避免?
探索DS1321:靈活的非易失性控制器與鋰電池監(jiān)測器
永磁電機(jī)失磁有什么表現(xiàn)
AI代碼之爭忽略了什么
LAT1178+關(guān)閉 SPI 會(huì)導(dǎo)致 WRPERR 錯(cuò)誤的問題分析應(yīng)用筆記
國資入主聯(lián)創(chuàng)電子開啟企業(yè)發(fā)展嶄新篇章
【道生物聯(lián)TKB-623評(píng)估板試用】道生物聯(lián)TKB-623評(píng)估板主機(jī)設(shè)置測試
【道生物聯(lián)TKB-623評(píng)估板試用】+ 初步認(rèn)識(shí)道生物聯(lián)TKB-623評(píng)估板
從“數(shù)據(jù)失聯(lián)”到“實(shí)時(shí)在線”:Modbus轉(zhuǎn)Profinet的“魔法操作”揭秘
賦能者:低代碼物聯(lián)云平臺(tái),讓每個(gè)企業(yè)輕松擁有智能場景
Molex薄膜電池的技術(shù)原理是什么?-赫聯(lián)電子
稀土永磁同步電動(dòng)機(jī)失磁對電機(jī)損耗的影響
同步電機(jī)失步淺析
網(wǎng)絡(luò)光纖出問題一般是什么原因導(dǎo)致的呢
是什么導(dǎo)致代碼失聯(lián)了呢?
評(píng)論