这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【STM32H5系列】串口printf之三

共9条 1/1 1 跳转至

【STM32H5系列】串口printf之三

助工
2024-10-05 21:54:54     打赏

【前言】

前面我在论坛之中分享了两种不同的重定向:

瑞萨RA0单片机连载之五——实现串口重定向之printf-电子产品世界论坛 (eepw.com.cn)

stm32H7S7L中printf不使用微库的实现方法-电子产品世界论坛 (eepw.com.cn)

这一篇分享一下另一种写法。

【开发板】

NUCLEO-H503RB

【软件环境】

MDK3.7

【实现方式】

1、在usart.h中引用必要的头文件:

/* USER CODE BEGIN Includes */
#include "stdarg.h"
#include "stdio.h"
#include "string.h"
/* USER CODE END Includes */

2、在usart.c中添加实现函数:

/* USER CODE BEGIN 1 */
void U3_printf(char *format,...){
	uint8_t send_str[128] = {0};
	va_list listdata;
	va_start(listdata,format);
	vsprintf((char *)send_str,format,listdata);
	va_end(listdata);
	HAL_UART_Transmit(&huart3,send_str,strlen((const char*)send_str),100);
}
/* USER CODE END 1 */

此函数主要是使用stdarg.h库函数,使用va_list来提取传进来的参数。再使用HAL库的发送函数,实现输出。

【实验效果】

在main.c中添加测试代码:

  /* USER CODE BEGIN 2 */
	U3_printf("%d,%c,%x\n",0x30,0x30,0x30);
	U3_printf("%s\n%s\n",__FILE__,__TIME__);
  /* USER CODE END 2 */

下载后,使用串口调试助手可以看到输出内容为:

image.png

【总结】

这个重定向,移植比较方向,不挑编译器。




关键词: STM32H5     printf     串口    

专家
2024-10-06 00:46:07     打赏
2楼

感谢楼主分享


专家
2024-10-06 00:49:46     打赏
3楼

感谢楼主分享


专家
2024-10-06 00:53:49     打赏
4楼

感谢楼主分享


专家
2024-10-06 01:52:21     打赏
5楼

感谢楼主分享


专家
2024-10-06 12:52:51     打赏
6楼

参考参考!


工程师
2024-10-06 13:42:00     打赏
7楼

666


专家
2024-10-07 14:57:24     打赏
8楼

感谢分享


高工
2024-10-10 23:36:16     打赏
9楼

谢谢分享


共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]