cubemx 串口重载与打印

1)cubemx生成工程,配置串口

2)在main.c中添加代码

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

 /* USER CODE BEGIN 3 */
 printf(" the uart is ready! \r\n" );                
        
  }
 /* USER CODE END 3 */


/* USER CODE BEGIN 4 */
 //重定向c库函数printf到串口USARTx,重定向后可使用printf函数
 int fputc(int ch, FILE *f)
 {
     /* 发送一个字节数据到串口USARTx */
     HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
     return (ch);
 }

 //重定向c库函数scanf到串口USARTx,重写向后可使用scanf、getchar等函数
 int fgetc(FILE *f)
 {
     int ch;
     /* 等待串口输入数据 */
     while (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_RXNE) == RESET);
     HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
     return (ch);
 }
/* USER CODE END 4 */

这里使用的是 串口1,根据需要可以修改成相应的串口句柄。

posted @ 2022-12-05 15:13  辛河  阅读(72)  评论(0编辑  收藏  举报