1. 程式人生 > >STM32除錯小結

STM32除錯小結

       花費一個月時間玩了一下STM32,因工作原因好幾年沒有程式設計了。鑑於工作需要學習了

一下STM32韌體庫的編程,針對一個月的重拾程式設計以及程式除錯工作進行總結。

       STM32開發優點:

       1.韌體庫大大簡化開發難度,提高程式設計效率;

       2.韌體庫中各種外設程式範例詳實,可以直接拿來使用;

       3.模擬器便宜,淘寶上幾十元就可以搞定。本人使用以前BLE電路上的J-LINK盜版模擬器,

意該版本模擬器驅一定要注意版本。

       當時安裝驅動程式搞了一下午都連線不上,使用J-LINK V6.12J才搞定。一定要注意驅動

版本不能太新,最好不要過v6.14版本

       缺點:

       1.幾種工作模式切換較慢,特別是從停機模式切換到執行模式時(使用片外晶振模式)

的時間需要2ms到3ms,種速度特別是和藍芽模組配合起來時,若接收藍芽資料反映特別慢。

       2.IC內部各種外設通道已經固定分配好,不能想其他BLE IC進行靈活分配。

如在除錯

DMA傳輸I2C資料時使用固件中程式出現一堆的問題,除錯過程中才發現原來自己將DMA通

道修改了。STM32的DMA通道都是已經分配好的,不像其他SOC可以靈活分配。如下圖所示:


如上所示I2C_TX和I2C_RX已固定分配為DMA1中的6和7通道。糾其原因是自己懶得看參考手冊。

       程式設計以及除錯總結:

       1.在多中斷時處理原則為關鍵性或小概率(如資料傳遞處理等)出現的中斷設定為

高中斷等級,對非關鍵性或大概率(如定時器或RTC中斷)中斷設定為低中斷等級。

       2.程式的除錯過程是很蛋疼的過程,秉持原則就是耐性追根溯源。要精讀除錯功能

所涉及到晶片資料,需要仔細比較程式中相關變數或暫存器的值是否正確,這裡除錯

過程中軟體的使用就非常重要了(不要再懶惰,不去看手冊)。


        3.keil mdk除錯方法小結

        ~邏輯分析儀的模擬(沒有示波器時比較有用)  

        a.設定為軟體模擬。

        

       b.選擇sybomls檢視程式所涉及到的暫存器,或者是直接輸入引腳如PORTB.0即可開始

邏輯分析儀模擬。



如上圖所示中special function registers中有著所有功能設定標誌位,將其將入邏輯分析儀即

可開始模擬。

       c.除錯中最重要的模組,檢視所有外設的暫存器功能值,依照此來進行除錯即可。


d.除錯過程中可以檢視區域性變數或全域性變數的值,但有時需要檢視某些指標對應的變數值,

此時可以使用memory輸入地址即可直接檢視。


附加備註:


USE_STDPERIPH_DRIVER巨集定義為使用韌體庫,在標頭檔案中包含所有外設標頭檔案。

STM32F10X_MD巨集定義為IC屬於大容量器件型別。