STM32程序調試技巧

Table of Contents

前言

調試原理

軟件調試

​硬件調試


前言

這一篇博客主要講解STM32F1開發板如何進行調試,分別是硬件調試(STLINK)調試和軟件調試。

調試原理

STM32的調試原理核心是比較複雜的,但是我們瞭解的東西可以簡單一些。首先STM32支持JTAG和SWJ調試,其中JTAG需要五個接口,SWJ僅需要兩個接口,所以在之後的大部分調試我們優先選擇SWJ進行調試,如下圖是STM32中文參考手冊的M3調試框圖。藍框爲JTAG調試,紅框爲SWJ調試端口。

在這裏插入圖片描述

如下圖所示,SWJ調試只需要PA13和PA14兩個引腳即可實現調試功能。

在這裏插入圖片描述

所以在一般情況下使JTAG-DP接口禁止,SW-DP接口允許

在這裏插入圖片描述

而如何實現使JTAG-DP接口禁止,SW-DP接口允許,需要用上一個GPIO的函數

void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);

FunctionalState NewState設置爲ENABLE,由下面代碼可知GPIO_Remap設置爲 GPIO_Remap_SWJ_JTAGDisable。

#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!< JTAG-DP Disabled and SW-DP Enabled */

軟件調試

首先按如圖設置Debug選項卡。

在這裏插入圖片描述

接下來,我們點擊開始/停止仿真按鈕,開始仿真,出現如圖所示的界面。

在這裏插入圖片描述

對於Debug工具條無論網上還是書上都有很很詳細的講解,這個地方我就只貼一張圖。比較重要的是邏輯分析窗口(電平高低),觀察窗口(觀察變量的值和C語言的觀察窗口一樣)和串口打印窗口。

在這裏插入圖片描述

調試的功能鍵和C語言調試基本相同。如果要查看某個變量的值只需選中加入到watch窗口即可

在這裏插入圖片描述

串口邏輯同理,串口輸出信息如下圖所示:

在這裏插入圖片描述
對跑馬燈可以進行邏輯分析,邏輯分析是隻有軟件調試纔有的功能,首先打開邏輯分析儀,打開之後如下圖所示。

在這裏插入圖片描述

在這裏插入圖片描述
接下來添加要分析的端口,比如我們要分析PE5和PB5,只需在右上角點擊添加輸入PORTB.5和PORTE.5即可,Type調整爲Bit,顏色自定。

在這裏插入圖片描述
然後設置一個斷點,即可開始分析,Zoom用來設置座標軸的單位,將鼠標移至圖中還可以得到分析的相應信息。

在這裏插入圖片描述
除此之外,在工具欄中的Peripherals中還可以看到更多的關於寄存器的信息,比如ODR寄存器用來設置高低電平的,就可以看到ODR寄存器每一位的狀態。

在這裏插入圖片描述

在這裏插入圖片描述
硬件調試

首先是要進行設置,我這裏可能說的不全面,詳細的設置方法參考《STM32F1開發指南-庫函數版本》3.4小節和6.4小節。
首先在Debug板塊中進行如下設置,然後再進入Utilities將紅框勾選。

在這裏插入圖片描述

在這裏插入圖片描述
之後回到Debug,再ST-LINK旁邊點擊Setting,進入Flash Download,注意藍框中的芯片要對應是連接的芯片,紅框如圖設置。

在這裏插入圖片描述
之後要用ST-LINK連接開發板和電腦進行下一步設置。PORK選擇SW,其他的根據需要修改,然後開始連接開發板開始調試即可,點擊。

在這裏插入圖片描述
先編譯下載,再調試。

在這裏插入圖片描述

之後可以打開串口調試助手,一直讓程序run下去,然後串口調試助手就可以看到一直在打印t的值,調試程序見後文。

值得注意的是,串口的選擇不要選錯COM口了,否則會看不到結果,還要要記得點開啓串口。

在這裏插入圖片描述
調試程序

main.c
#include "sys.h"
#include "delay.h"
#include "usart.h"
int main(void)
 {        
     u8 t=0;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組爲組2:2位搶佔優先級,2位響應優先級
    delay_init();             //延時函數初始化      
    uart_init(115200);     //串口初始化爲115200
  while(1)
    {
        printf("t:%d\r\n",t);
        delay_ms(500);
        t++;
    }     
} 


參考資料
《STM32F1開發指南-庫函數版本》3.4小節和6.4小節
《STM32中文參考手冊V10》29章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章