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