簡介
STM32支持連接調試器進行在線Debug調試,可以用於一步步的排查程序的錯誤
STM32F1系列的Cortex-M3 支持兩種調試主機接口(debug host interface ) :
- 第一個是廣爲使用的JTAG 接口
- 另一個是新的“串行線(Serial Wire, SW)調試接口”,也就是SWD調試接口
SWD和JTAG兩種調試接口仿真的區別
- 兩者的區別主要在於使用引腳的多少,STM32F1單片機往往沒有很富裕的管腳資源,而 JTAG協議需要使用 4 根腳,而 SW 則只需要兩根
- 在大數據較大的情況下面使用JTAG 下載程序可能會失敗,而用SWD下載程序下載失敗的概率會大大降低
- 使用 JTAG 仿真模式的情況下是可以直接使用 SWD 模式的,例如ST-Link就支持同一個調試器使用兩種仿真接口進行下載,主要取決於下載器是否支持
- 由於SWD只佔用用兩個接口,JTAG佔用4個,較少的接口可以降低PCB佈線的難度以及縮小PCB板的體積
硬件接線圖
JTAG:
SWD:
Cortex-M3的兩種調試模式
- 停機模式
- 指令執行被停止
- SysTick 定時器停止
- 支持單步操作
- 中斷可以在這期間懸起,並且可以在單步執行時響應。也可以掩蔽它們,使得單步
時不受干擾
- 調試監視器模式
- 處理器執行調試監視器異常的服務例程(異常號: 12)
- SysTick 定時器繼續運行
- 新來的中斷按普通執行時的原則來搶佔
- 執行單步操作
- 存儲器的內容(如堆棧內存)會在調試監視器的響應前後更新,因爲有自動入棧和出棧的動作
一般用的比較多的是停機模式
keil5中對ST-Link調試器進行配置(SWD)
- 首先需要下載ST-link v2的驅動程序
- 打開Keil5,點擊魔術棒
- 在debug選項卡中選則ST-Link調試器
- 點擊Settings,選擇SW模式以及速率
- 選擇Reset and Run,覈對所選擇芯片的內存
- 單片機連接上ST-Link接口並在Keil5中點擊Start/Stop Debug Session 即可開始使用ST-Link仿真