VS+GDB中为STM32重定向printf函数

keil写代码太难受了,换万能的Visual Studio吧!

因为之前一直是照着正点原子的案例来重写printf函数来实现串口输出,一直没有找到原因,最近终于成功了。

原因:
正点原子给的案例都是在keil中编译的,使用的编译器是armcc编译器,printf函数底层是由fputc实现的。而VSGDB中的编译器是gcc,printf函数是由_write函数实现的,这时候再重定向是毫无卵用的。

修改方法:
我之前在fputc函数中加入改变led的代码毫无变化,当时就认为我写的fputc函数并没有被调用,但一直没有找到原因。今日找到了一位老哥在论坛的评论(改写_write函数),修改代码如下:

#if 0
#pragma import(__use_no_semihosting)                          
struct __FILE 
{
    
	int handle; 

}; 

FILE __stdout
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值