STM32G0 printf()實(shí)現(xiàn)
前言
ST對(duì)于Cortex-M0系列的單片機(jī),只提供了HAL庫和LL庫兩種開發(fā)模式。如果你想生成gcc工程,然后用VS,Clion等環(huán)境進(jìn)行開發(fā)的話,就會(huì)遇到一個(gè)十分尷尬的問題:gcc編譯的bin文件太大了,M0系列單片機(jī)下載不進(jìn)去。。
當(dāng)然,如果你只是用LL庫和HAL庫中的函數(shù),基本不會(huì)遇到Flash不夠用問題。但是,開發(fā)過程中難免需要使用printf()等標(biāo)準(zhǔn)庫函數(shù),而一旦你引入#include<stdio.h>,并調(diào)用printf("PI: %f",3.14); 你就會(huì)驚訝的發(fā)現(xiàn):臥槽,F(xiàn)lash占用34KB!生成bin文件大小超出單片機(jī)總存儲(chǔ)空間,生成失敗!
解決
那就只調(diào)用HAL庫或LL庫函數(shù),自己實(shí)現(xiàn)一個(gè)printf()函數(shù)。這里以LL庫為例:
在main.c中進(jìn)行測(cè)試:
如果你生成的MDK工程,就不需要考慮這些問題了,直接調(diào)printf()就完了,MDK使用的標(biāo)準(zhǔn)庫是精簡(jiǎn)的,生成的bin文件是非常小的,基本不會(huì)超出芯片F(xiàn)lash。
直接復(fù)制就能用,沒效果你來砍我。
標(biāo)簽: