STM32 的 printf() 函數串口重定向(HAL庫標准庫都適用)


1.建立工程

2.核心:添加新文件usar_fputc.c (名字隨便自己命名),把文件添加到項目中去 

  #include "stdio.h"
  #include "stm32f1xx_hal.h"

  extern UART_HandleTypeDef huart1;
  uint8_t ch;
  uint8_t ch_r;

  //重寫這個函數,重定向printf函數到串口
  /*fputc*/
  int fputc(int c, FILE * f)
  {
    ch=c;
    HAL_UART_Transmit(&huart1,&ch,1,1000);//發送串口
    return c;
  }

 

  //重定向scanf函數到串口 意思就是說接受串口發過來的數據
  /*fgetc*/
  int fgetc(FILE * F)
  {
    HAL_UART_Receive (&huart1,&ch_r,1,0xffff);//接收
    return ch_r;
  }

3.修改main.c 文件

  #include "stdio.h" /*添加頭文件 */

  在main()函數里添加測試代碼:printf("\n===函數Printf函數發送數據===\n");  //測試內容

4.打開串口助手測試最終效果如圖:

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM