成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 資料介紹
    • 1、前言
    • 2、方法
    • 3、小結(jié)
  • 資料預覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

AT1485 STM32CubeIDE實用技巧之條件斷點的妙用

03/06 14:50
851
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

AT1485 STM32CubeIDE實用技巧之條件斷點的妙用

590.64 KB

1、前言

嵌入式項目中,我們經(jīng)常會碰到各種各樣的異常和故障,比如客戶說,某個問題可能需要一天,一周,甚至以月為周期才能復現(xiàn)一次問題。諸如此類問題,著實令工程師苦惱,因為很難去捕獲信息來分析和復現(xiàn)問題,這里給大家分享一些我的經(jīng)驗和技巧。

2、方法

我們都知道調(diào)試是非常高效的分析手段,相信大家對斷點(breakpoint)并不陌生,事實上,斷點還可以設(shè)置條件的,當條件滿足時再觸發(fā)斷點,這對于分析疑難雜癥非常有用。接下來我將介紹如何在 STM32CubeIDE 中使用條件斷點,以及如何使用觀察點。

2.1. 斷點/breakpoint

斷點就是當程序到達某個點時,斷點可使程序暫停運行。我們在調(diào)試界面先設(shè)置一個斷點,鼠標右擊該斷點進入斷點的屬性界面。

為了演示,我在斷點的屬性界面中,為斷點增加了一則條件:(*(int *) 0x42020414 ==0x01)&&(hspi1.Init.NSSPMode == 0x40000000)。此處的“0x42020414”就是 GPIOB 的 ODR 寄存器的地址, “0x40000000”就是“SPI_NSS_PULSE_ENABLE”的宏定義,所以該條件的含義是:當 PB0 輸出高電平時,并且SPI1 的 NSSPMode=SPI_NSS_PULSE_ENABLE 時,觸發(fā)該斷點。

2.2. 觀察點/watchpoint

與條件斷點稍微不同,觀察點也是一種特殊的斷點,當表達式的值發(fā)生變化時,它會使程序暫停運行。那么如何設(shè)置觀察點呢?

還是在調(diào)試界面,首先我們在 outline 界面,或者將變量添加到Variables/Expression/LiveExpression 界面,然后找到該變量,右擊選擇“ToggleWatchpoint”。

在之后出現(xiàn)的界面中,設(shè)置觀察點的屬性。為了演示,我這里設(shè)置了這樣的條件:當ret 變量被寫入的時候,并且 ret 的值不等于 2 的時候,觀察點生效,如下圖所示。大家還可以根據(jù)需要,勾選上“Read”選項,就可以設(shè)置變量在被讀的時候是否生效,非常的方便實用。

3、小結(jié)

這些方法在調(diào)試疑難雜癥時是非常有用的,但是弊端在于,必須連接仿真器進入調(diào)試模式。

Cortex-M3 以及更高級的內(nèi)核(如 M4,M33,M7 等)中,對于不連接調(diào)試器的場景,我們還可以利用 SWV,以及 DWT 等調(diào)試單元來提前預埋監(jiān)控程序,實現(xiàn)對內(nèi)存/變量,以及函數(shù)的監(jiān)控和調(diào)試。如“LAT1256 使用 STM32 的 DWT 單元監(jiān)控內(nèi)存”提供了類似的調(diào)試方法的說明。

同樣,我們還可以通過 STM32CubeMonitor 來實現(xiàn)非侵入式的監(jiān)控。對于疑難雜癥,我們的方法是非常多的,大家可以選擇合適的方式來分析問題。

資料預覽

相關(guān)推薦

右玉县| 荔浦县| 大同县| 陕西省| 五大连池市| 云梦县| 昌黎县| 铜陵市| 上蔡县| 乌兰察布市| 临城县| 镇安县| 双城市| 东港市| 古丈县| 德格县| 尤溪县| 康保县| 宣威市| 策勒县| 武乡县| 东阿县| 历史| 前郭尔| 长顺县| 左权县| 昭苏县| 霍山县| 交口县| 尼玛县| 永丰县| 湖南省| 莆田市| 四川省| 梨树县| 太仆寺旗| 上蔡县| 类乌齐县| 咸宁市| 连城县| 苏尼特左旗|