【STM32】STLINK调试程序教程
00. 目錄
文章目錄
- 00. 目錄
- 01. 概述
- 02. STLINK調試程序
- 03. 附錄
- 04. 聲明
01. 概述
在實際的開發過程中,如果程序比較簡單就不需要調試程序,但是對于比較復雜的程序,往往需要通過調試來解決bug。串口只能下載代碼,并不能實時跟蹤調試,而利用調試工具,比如 JLINK、ULINK、STLINK等就可以實時跟蹤程序,從而找到你程序中的 bug,使你的開發事半功倍。
STLINK 支持 JTAG 和 SWD,同時 STM32F4 也支持 JTAG 和 SWD。所以,我們有 2 種方式可以用來調試,JTAG 調試的時候,占用的 IO 線比較多,而 SWD 調試的時候占用的 IO 線很少,只需要兩根即可。
02. STLINK調試程序
2.1 點擊開始調試按鈕
編譯一下工程。然后點擊:(開始/停止仿真按鈕),開始仿真(如果開發板的代碼沒被更新過,則會先更新代碼(即下載代碼),再仿真,你也可以通過按下載按鈕,只下載代碼,而不進入仿真。特別注意:開發板上的 B0和 B1 都要設置到 GND,否則代碼下載后不會自動運行的!)
2.2 跳轉到主函數執行
2.3 Debug工具條介紹
因為我們之前勾選了 Run to main()選項,所以,程序直接就運行到了 main 函數的入口處。另外,此時 MDK 多出了一個工具條,這就是 Debug 工具條,這個工具條在我們仿真的時候是非常有用的,下面簡單介紹一下 Debug 工具條相關按鈕的功能。
復位:其功能等同于硬件上按復位按鈕。相當于實現了一次硬復位。按下該按鈕之后,代碼會重新從頭開始執行。
執行到斷點處:該按鈕用來快速執行到斷點處,有時候你并不需要觀看每步是怎么執行的,而是想快速的執行到程序的某個地方看結果,這個按鈕就可以實現這樣的功能,前提是你在查看的地方設置了斷點。
停止運行:此按鈕在程序一直執行的時候會變為有效,通過按該按鈕,就可以使程序停止下來,進入到單步調試狀態。
執行進去:該按鈕用來實現執行到某個函數里面去的功能,在沒有函數的情況下,是等同于執行過去按鈕的。
執行過去:在碰到有函數的地方,通過該按鈕就可以單步執行過這個函數,而不進入這個函數單步執行。
執行出去:該按鈕是在進入了函數單步調試的時候,有時候你可能不必再執行該函數的剩余部分了,通過該按鈕就直接一步執行完函數余下的部分,并跳出函數,回到函數被調用的位置。
執行到光標處:該按鈕可以迅速的使程序運行到光標處,其實是挺像執行到斷點處按鈕功能,但是兩者是有區別的,斷點可以有多個,但是光標所在處只有一個。
匯編窗口:通過該按鈕,就可以查看匯編代碼,這對分析程序很有用。
堆棧局部變量窗口:通過該按鈕,顯示 Call Stack+Locals 窗口,顯示當前函數的局部變量及其值,方便查看。
觀察窗口:MDK5 提供 2 個觀察窗口(下拉選擇),該按鈕按下,會彈出一個顯示變量的窗口,輸入你所想要觀察的變量/表達式,即可查看其值,是很常用的一個調試窗口。
內存查看窗口:MDK5 提供 4 個內存查看窗口(下拉選擇),該按鈕按下,會彈出一個內存查看窗口,可以在里面輸入你要查看的內存地址,然后觀察這一片內存的變化情況。是很常用的一個調試窗口
串口打印窗口:MDK5 提供 4 個串口打印窗口(下拉選擇),該按鈕按下,會彈出一個類似串口調試助手界面的窗口,用來顯示從串口打印出來的內容。
邏輯分析窗口:該圖標下面有 3 個選項(下拉選擇),我們一般用第一個,也就是邏輯分析窗口(Logic Analyzer),點擊即可調出該窗口,通過 SETUP 按鈕新建一些 IO 口,就可以觀察這些 IO 口的電平變化情況,以多種形式顯示出來,比較直觀。
系統查看窗口:該按鈕可以提供各種外設寄存器的查看窗口(通過下拉選擇),選擇對應外設,即可調出該外設的相關寄存器表,并顯示這些寄存器的值,方便查看設置的是否正確。
Debug 工具條上的其他幾個按鈕用的比較少,我們這里就不介紹了。以上介紹的是比較常用的,當然也不是每次都用得著這么多,具體看你程序調試的時候有沒有必要觀看這些東西,來決定要不要看。
特別注意:串口打印窗口和邏輯分析窗口僅在軟件仿真的時候可用,而 MDK5 對 STM32F4的軟件仿真,基本上不支持(故本教程直接沒有對軟件仿真進行介紹了),所以,基本上這兩個窗口用不著。但是對 STM32F1 的軟件仿真,MDK5 是支持的,在 F1 開發的時候,可以用到。
2.4 設置和取消斷點
我們把光標放到 test.c 的第22行左側的灰色區域,然后按下鼠標左鍵,即可放置一個斷點(紅色的實心點,也可以通過鼠標右鍵彈出菜單來加入),再次單擊則取消。
2.5 點擊run執行到斷點處
2.6 查看外設信息
點擊菜單欄的 Peripherals→System Viewer→GPIO→GPIOF。可以看到,有很多外設可以查看,這里我們查看的是GPIOF 的情況。
單擊 GPIOF后會在 IDE 右側出現一個如圖
2.7 執行完初始化
我們可以查看GPIOF 的各個寄存器設置狀態,從而判斷我們寫的代碼是否有問題,只有這里的設置正確了之后,才有可能在硬件上正確的執行。同樣這樣的方法也可以適用于很多其他外設,這個讀者慢慢體會吧!這一方法不論是在排錯還是在編寫代碼的時候,都是非常有用的。
2.8 查看棧信息
03. 附錄
6.1 【STM32】STM32系列教程匯總
網址:【STM32】STM32系列教程匯總
04. 聲明
該教程參考了正點原子的《STM32 F4 開發指南》
總結
以上是生活随笔為你收集整理的【STM32】STLINK调试程序教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【STM32】keil软件常用使用技巧
- 下一篇: 【STM32】STM32F4系统架构