keil使用printf函数重定串口输出,程序卡在Reset_Handler

       最近在做国产芯片GD32F103项目,使用printf()函数重定向USART0串口输出,发现程序没有运行,单步调试发现,程序卡在startup_gd32f10x.s文件的Reset_Handler处,记录一下解决方法。

keil使用printf函数重定串口输出,程序卡在Reset_Handler_第1张图片

解决办法:

1、引用头文件#include

2、“Options for Target”中勾选“Use MicroLIB”。

keil使用printf函数重定串口输出,程序卡在Reset_Handler_第2张图片

 原因:

        printf() 函数是一个标准C库函数。如果未启用"MicroLIB"选项,Keil默认使用完整的标准C库(如libc.a),这样会增加代码的大小,可能会导致程序的存储空间消耗过大,而嵌入式系统资源(存储器和处理能力等)是有限的。。

        启用"MicroLIB"选项,Keil则启用MicroLIB C库,这是一个精简的标准C库,能有效的减少嵌入式系统中代码的大小和资源消耗,可以帮助确保代码能够正常运行并避免因代码大小问题导致的程序停止。

你可能感兴趣的:(ARM开发,BUG解决,单片机,嵌入式硬件)