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屬於大容量器件型別。