检查完所有的硬件和软件部分,最后发现,又是Keil的设置问题,啊啊啊啊
打开Keil的魔术棒,勾选Target的Use Microlib选项即可,但这并不是最佳方案
最终解决方案:
参考:http://t.csdnimg.cn/2Tjfc
1、使用MicroLIB,简化嵌入式开发操作,例如你用printf()函数的时候,就会从串口1输出字符串,当然也可以重定义到其他串口;
2、使用MicroLIB会优化代码空间,但会降低某些程序的执行效率(比如: memcpy()),效率换空间;
3、由于MicroLIB不支持浮点运算,所以在有FPU单元的MCU上,使用MicroLIB并开启FPU会让程序死机或跑飞。
4、Microlib不支持C++,在使用C++开发MCU时,首要条件是不能使用Microlib;
放在main.c的#include<stdio.h>后面就行
/* 告知连接器不从C库链接使用半主机的函数 */
#pragma import(__use_no_semihosting)/* 定义 _sys_exit() 以避免使用半主机模式 */
void _sys_exit(int x)
{x = x;
}/* 标准库需要的支持类型 */
struct __FILE
{int handle;
};
FILE __stdout;
非常感谢这位作者的帖子,终于把这个困扰了两天的问题解决了