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

你可能感兴趣的:(STM32,VS,stm32)