1. 程式人生 > >【轉】分享兩個基於MDK IDE的除錯輸出技巧

【轉】分享兩個基於MDK IDE的除錯輸出技巧

我們在STM32開發除錯過程中,常常需要做些直觀的輸出,如果手頭沒有相關的裝置或儀器,我們可以使用 IDE自帶的工具。這裡分享兩個基於MDK  IDE的除錯輸出技巧。

一、使用其自帶的邏輯分析儀檢視波形。

比方我們需要檢視STM32定時器的PWM輸出,手頭又沒有示波器或邏輯分析儀, 尤其學生族。我們可以用MDK自帶的邏輯分析儀來察看結果。

假設基於某一款STM32F4晶片,輸出一個脈寬為100us,佔空比為40%的波形。使用TIM3的通道1輸出PWM波形,用到GPIOA_6,即PA6.

STM32定時器的引數配置我這裡就省略了。我開啟定時器的比較中斷和更新中斷,在中斷裡將PA口的IDR值讀到一個全域性變數TIM3_CH1_OUT裡。

下面主要介紹跟LA[邏輯分析儀縮寫]有關的配置:

1、

2、

3、聯機進入除錯狀態,進一步配置:

4、執行看結果:

結果出來了,比較直觀,也具備較好的測量能力。比一般的示波器不會差。

二、使用除錯工具自帶的SWO功能做printf輸出

我們在除錯過程中往往需要做些printf輸出,通常使用UART實現。順便用下倒還好,不然得單獨配置出UART,PC端需裝應用軟體和win驅動,還得輔以額外的硬體。

其實,我們很多時候可能通過SWO方式做輸出就好,只要晶片和偵錯程式支援。

SWO,serial wire output ,一種非同步序列通訊通道。目前基於Cor

tex M3,M4,M7核心晶片都支援。通過配置暫存器DBGMCU_CR裡的TRACE_IOEN和TRACE_MODE來啟用。當然用CUBEMX配置生成初始化程式碼就更簡單了。像下面這樣:

跟MDK有關的配置:

1、

2、進入除錯狀態,點選View/Serial Windows/Debug(printf)Viewer

3、使用者程式碼裡新增:

#include“stdio.h”

int fputc(int ch, FILE *f)

{

ITM_SendChar(ch);

return (ch);

}

4、執行看結果:

 

來源