其次,定义打印函数(以串口2为例): /** * @brief 自定义UART2串口打印 * @param *fmt,... 要打印的数据内容,用法类似printf * @retval void */ extern UART_HandleTypeDef huart2; void My_printf(char* fmt,...) { static __align(8) uint8_t USART2_buffer[128]; va_list ap; va_start(ap,...
HAL_UART_Receive(&huart1,&ch, 1, 0xffff); return ch; } //后面直接使用printf函数即可: printf("AnQi测试\r\n"); 若不想自己封装代码,只需把usart_printf.c复制到主函数即可。 3.主函数main.c 记得在主函数中引入.h文件 直接使用printf即可,和C语言中的用法相同 4.Keil设置 在编译下载之前,一定要...
HAL_UART_Transmit(&huart1,&ch,1,1000);//发送串口,不同的单片机函数和串口命名不同,替换对于的函数串口名字即可实现不同库和不同单片机的重定向了 return c; } //重定向scanf函数到串口 意思就是说接受串口发过来的数据 /*fgetc*/ int fgetc(FILE * F) { HAL_UART_Receive (&huart1,&ch_r,1,0x...
uint8_t ch_r; //重写这个函数,重定向printf函数到串口,意思就是说printf直接输出到串口,其默认输出到控制台的 /*fputc*/ intfputc(intc,FILE* f) { ch=c; HAL_UART_Transmit(&huart1,&ch,1,1000);//发送串口 returnc; } //重定向scanf函数到串口 意思就是说接受串口发过来的数据,其默认是接受控制...
HAL_UART_Transmit(&UartHandle,temp,1,2); //UartHandle是串口的句柄 } //重定向函数2 PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&UARTHandle, (uint8_t *)&ch, 1, 0xFFFF); return ch; } 在keil中勾选使用C库 之后就可以 使用printf()函数,像C语言一样输出打印信息,支持 %d %x 等一些格式输出。
3.其实在单片机之中如果不重定向 printf() 函数。我们只要使用 sprintf() 函数即可: 代码语言:javascript 复制 intprintf(constchar*format,...);//printf()函数声明原型intsprintf(char*buffer,constchar*format,...);//sprintf()函数声明原型 sprintf() 只是比 printf() 多一个参数,即第一个字符数组,他们两...
HAL库UATR函数库 重定义printf函数 HAL库,UART中断接收 HAL库UATR接收与发送例程 工程创建 1设置RCC 设...
STM32开发printf和scanf函数的重定向——修改HAL标准库⽤ printf函数发。。。⾸先在main.c⽂件中添加标准输⼊输出库 #include <stdio.h> 然后在stm32cubemx⽣成的⽂件中,找到usart.c⽂件,在后⾯添加如下代码 #include "stdio.h"#include "stm32f1xx_hal.h"//这个变量是其他.c⽂件定义的 ...