91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

代碼調(diào)著調(diào)著就失聯(lián)了

來源:公眾號【魚鷹談單片機(jī)】

作者:魚鷹Osprey

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

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

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

那會是什么導(dǎo)致失聯(lián)了呢?

魚鷹總結(jié)了以下幾種可能:

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

2、MDK 軟件問題

3、MDK 工程兼容問題

4、看門狗復(fù)位(窗口、獨立看門狗)

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

還有一種很容易忽略的可能是,項目代碼開啟了看門狗,單步調(diào)試時間太長,沒有及時喂狗導(dǎo)致復(fù)位。

此時,我們又該如何解決呢?這就是本篇筆記的重點。

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

這里我們看看獨立看門狗這個位的介紹:

可以看到,這個作用就是,當(dāng)我們進(jìn)入調(diào)試狀態(tài)時,看門狗計數(shù)器停止工作。

F103 函數(shù)設(shè)置如下:

    DBGMCU_Config(DBGMCU_IWDG_STOP, ENABLE);

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

    這樣也就不會導(dǎo)致前面說的失聯(lián)問題,可以讓你專心分析代碼邏輯。

    那如果說,原來的代碼沒有考慮這個點,沒有配置這個位,咋辦?

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

    那如果只有幾秒鐘咋辦?手動操作可能根本來不及,魚鷹在此再支一招:

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

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

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

    聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
    覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
    贊 1
    收藏 2
    關(guān)注 160
    成為作者 賺取收益
    全部留言
    0/200
    成為第一個和作者交流的人吧
    主站蜘蛛池模板: 晋中市| 永仁县| 建德市| 子长县| 大宁县| 沂源县| 嘉善县| 咸丰县| 蚌埠市| 巨鹿县| 南丰县| 鄱阳县| 陆河县| 桂平市| 平乐县| 三穗县| 仁寿县| 丹棱县| 偏关县| 安新县| 措美县| 咸宁市| 临安市| 阳新县| 鹤岗市| 通许县| 汝城县| 桂平市| 华容县| 青海省| 叙永县| 法库县| 诏安县| 遂昌县| 阜宁县| 武胜县| 泸西县| 调兵山市| 富裕县| 绥芬河市| 阳朔县|