以前用Keil MDK總喜歡用一個串口,使用printf函數往串口助手上打印一些提示信息。發現使用ITM比使用串口調試好使一點,但是前提是,必須要用調試器,J-Link或者ST-Link,ST-Link還必須要有SWO這根線,也就是一般開發板上帶的4線的SWD接口是不行的。下面記錄一下我的配置過程。
打開IDE新建STM32工程,file-->new-->STM32 Project,然后選擇自己的開發板,點擊next,輸入工程名,點擊Finish。
進入到配置頁面,先配置HCLK,記好這個值,
Ctrl + S生成代碼,打開main.c,添加以下代碼
/* USER CODE BEGIN Includes */ #include "stdio.h" /* USER CODE END Includes */ ... ... ... /* USER CODE BEGIN 0 */ int _write(int file , char *ptr,int len) { int i = 0; for(i = 0;i<len;i++) ITM_SendChar((*ptr++)); return len; } /* USER CODE END 0 */
也可以將#include "stdio.h"寫到main.h中,這樣在別的文件中也能用printf了,
在main函數的while(1)中加入printf測試
/* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ printf("Hello World!\n"); HAL_Delay(1000); /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */
點擊 小錘子 構建項目,完成后點擊 Debug
點擊 OK
點擊 調試器選項卡,更改調試探頭為實際使用的仿真器,勾選Enable SWV,並修改內核時鍾為創建工程時設置的HCLK的值。點擊 Apply,再點擊OK。
進入到Debug頁面后,點擊 Windows-->show View --->SWV--->SWV ITM data console
可以看到在下部出現了SWV ITM data console窗口,點擊configure trace,
勾選圖中兩處,然后點擊OK,關閉后再點擊紅色小圓圈
然后點擊Resume
即可在SWV ITM data console窗口看到printf打印的內容。