STM32开发踩坑——基于GCC环境下的printf输出重定向

成立这个专栏的目的是,记录自己嵌入式开发遇到的问题,与成功的解决方法,方便自己回顾。

注意:GCC环境下printf函数实现机制与MDK环境下实现机制不同,以下操作可以合二为一

实现步骤:

1.添加头文件stdio

#include "stdio.h"

2.在 usart.c 的前部加入:

#ifdef __GNUC__
/* With GCC, small printf (option LD Linker->Libraries->Small printf
   set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */

实现了统一接口,只需要实现PUTCHAR_PROTOTYPE函数即可

3.在 usart.c 的后部加入:

PUTCHAR_PROTOTYPE
{
	while((USART2->SR & 0x40) == 0);
	USART2->DR = (uint8_t)ch;
	return ch;
}

输出无数据时,注意缓冲区刷新条件是否满足。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值