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函数到串⼝意思就是说接受串⼝发过来的数据,其默认是接受控制台的数据
printf函数是如何实现的/*fgetc*/
int fgetc(FILE * F)
{
HAL_UART_Receive (&huart1,&ch_r,1,0xffff);//接收
return ch_r;
}