STM32开发 printf和scanf函数的重定向——修改HAL标准库用printf函数发送数据直接输出

首先在main.c文件中添加标准输入输出库

#include <stdio.h>

然后在stm32cubemx生成的文件中,找到usart.c文件,在后面添加如下代码

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

//这个变量是其他.c文件定义的
extern UART_HandleTypeDef huart1;
uint8_t ch;
uint8_t ch_r;
//重写这个函数,重定向printf函数到串口,意思就是说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;
}

  

 

posted @ 2020-10-11 09:42  wind_under_the_wing  阅读(2789)  评论(0编辑  收藏  举报