1. 程式人生 > >STM32—printf函式重定義

STM32—printf函式重定義

  為了便於除錯,我們經常要使用到printf函式,打印出除錯的資訊。在Keil軟體中,要使用printf輸出函式的話,注意需要先把use MicrolLIB選項選上,如下圖。

這裡寫圖片描述

  接著 ,在main函式的新增標頭檔案下方新增printf函式的宣告,程式碼如下:

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f4xx_hal.h"

 // 新增的程式碼如下,進行函式重構
#ifdef __GNUC__            //gcc編譯器巨集定義
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf set to 'Yes') calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__ */ /*上面的意思是: 如果定義了巨集__GNUC__,即使用GCC編譯器,則定義巨集#define PUTCHAR_PROTOTYPE int __io_putchar(int ch) 如果沒有定義巨集__GNUC__,即不使用GCC編譯器,則定義巨集#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) */
//新增printf重構函式的實現部分 PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF); return ch; }

  在mian函式的while(1)迴圈中新增列印輸出函式,測試效果。

  while (1)
    {
        printf("printf teset\r\n");//列印輸出
        HAL_Delay(1000);//延時1S
    }

  測試效果如下圖,可是實現printf函式的列印。
這裡寫圖片描述