廈門網(wǎng)站免費(fèi)制作百度優(yōu)化培訓(xùn)
?????? 最近在做國產(chǎn)芯片GD32F103項(xiàng)目,使用printf()函數(shù)重定向USART0串口輸出,發(fā)現(xiàn)程序沒有運(yùn)行,單步調(diào)試發(fā)現(xiàn),程序卡在startup_gd32f10x.s文件的Reset_Handler處,記錄一下解決方法。
解決辦法:
1、引用頭文件#include<stdio.h>
2、“Options for Target”中勾選“Use MicroLIB”。
?原因:
??????? printf() 函數(shù)是一個標(biāo)準(zhǔn)C庫函數(shù)。如果未啟用"MicroLIB"選項(xiàng),Keil默認(rèn)使用完整的標(biāo)準(zhǔn)C庫(如libc.a),這樣會增加代碼的大小,可能會導(dǎo)致程序的存儲空間消耗過大,而嵌入式系統(tǒng)資源(存儲器和處理能力等)是有限的。。
??????? 啟用"MicroLIB"選項(xiàng),Keil則啟用MicroLIB C庫,這是一個精簡的標(biāo)準(zhǔn)C庫,能有效的減少嵌入式系統(tǒng)中代碼的大小和資源消耗,可以幫助確保代碼能夠正常運(yùn)行并避免因代碼大小問題導(dǎo)致的程序停止。