STM32使用Hal库支持printf

  • Post author:
  • Post category:其他




STM32配置HAL库支持printf



1.在STM32CubeMX中配置串口如下图所示:



2.在头文件中定义宏

首先USART.H文件中引入:

#include <stdio.h>

然后在USART.H件添加如下代码:

/* 宏定义缓冲区大小 */
#define USART1_BUFF_SIZE 256
/* 声明冲区数组 */
extern uint8_t USART1_BUFF[USART1_BUFF_SIZE];
extern uint8_t USART1_BUFF[USART1_BUFF_SIZE];
/* 重定向printf */
#define printf(...)    HAL_UART_Transmit(&huart1,\
										(uint8_t *)u_buf,\
										sprintf((char*)u_buf,__VA_ARGS__),\
										0XFFFF)



3.在USART.C文件定义缓冲区数组

打开USART.C中定义全局数组

/* 定义串口发送缓冲区数组 */
uint8_t USART1_BUFF[USART1_BUFF_SIZE];



4.测试printf是否生效

在main函数中添加测试代码

printf("Hello World!\r\n")
HAL_Delay(1000);

编译后烧录观察串口助手是否收到

串口助手收到数据即大功告成!



版权声明:本文为weixin_49048250原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。