使用STM32CubeIDE生成STM32H7系列芯片的驱动代码中关于串口打印函数printf(); 的重定义问题解决。

在进行STM32H750系列芯片开发过程中,使用ST官方自带的CubeIDE开发工具生成具有串口输出功能的驱动代码时,直接调用printf()时,是无法直接成功打印出相关信息到上位机,串口调试助手的。如下图所示,串口在CubeIDE中的配置以及相关打印函数的直接调用,其中串口1的IO口复用是PA9、PA10。

下图展示了在未进行任何重定义的情况下,直接调用printf(),结果很明显,在串口助手中没有任何输出。

原因很简单,要想调用printf(),那么就需要对该函数的接口进行重定义,也就是添加某些必要代码,添加代码如下,本人将下面的代码放在的文件是usart.c中,并且将#include "stdio.h"包含在main.h文件中。

#ifdef __GNUC__

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#endif

PUTCHAR_PROTOTYPE

{

     HAL_UART_Transmit(&huart1, (uint8_t*)&ch,1,HAL_MAX_DELAY);

     return ch;

}

最后重新编译代码,连接MCU以及烧录代码,可以看到在串口助手中看到打印的数据为

Hello H750 !!******** 这代表在CubeIDE环境下使用串口的printf()函数成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值