Ⅰ、寫在前面
在我們學(xué)習(xí)C語(yǔ)言的時(shí)候都應(yīng)該知道printf和scanf這個(gè)函數(shù),但是你們?cè)陂_發(fā)中經(jīng)常使用這個(gè)函數(shù)嗎?
在我們購(gòu)買開發(fā)板配套例程以及在網(wǎng)上找的例程中或許會(huì)見(jiàn)到使用printf函數(shù)的地方,就有許多人問(wèn),這個(gè)printf和scanf是如何配置才能使用的?
printf和scanf串口打印功能對(duì)于學(xué)習(xí)開發(fā)的朋友是一種很好的工具,在沒(méi)有顯示屏或更多表現(xiàn)你程序運(yùn)行結(jié)果的時(shí)候,用它打印信息就能很好地解決這個(gè)問(wèn)題。在實(shí)際項(xiàng)目中,用于打印某段程序運(yùn)行狀態(tài),也能幫你快速判斷程序的正確性。
Ⅱ、printf和scanf的配置
printf和scanf都知道他們是“標(biāo)準(zhǔn)函數(shù)接口”,源代碼的實(shí)現(xiàn)過(guò)程就不用我們自己寫,只需要調(diào)用就行了。
printf和scanf在軟件中要實(shí)現(xiàn)其功能,就需要對(duì)軟件及工程進(jìn)行配置,我們下面講述一下常規(guī)的配置。
配置分使用微庫(kù)和不使用微庫(kù)兩種方法,不使用微庫(kù)就是需要在代碼中多添加一段代碼,由于使用“標(biāo)準(zhǔn)函數(shù)接口”這種方式與編譯工具關(guān)系很緊密,在不同 編譯器上實(shí)現(xiàn)的方式存在不同(意思就是通用性不是很強(qiáng)),所以不建議使用這種方法。因此,我們講述使用微庫(kù)配置的方法。
1.使用微庫(kù)
我們講述MDK-ARM 和 EWARM下的配置。
MDK-ARM的使用微庫(kù):
Project -> Options for Target -> Target 勾選上“Use Micro LIB”,如下圖:

EWARM的使用微庫(kù):
Project -> Options -> General Options -> Library Configuration 選中“Full”,如下圖:

2.串口重定義
由于我們使用的是USART串口進(jìn)行打印數(shù)據(jù),則需要使用串口重定義。其實(shí)很簡(jiǎn)單,就是要在源代碼中重定義兩個(gè)函數(shù):int fputc(int ch, FILE *f)和int fgetc(FILE *f)
在STM32工程中:

Ⅲ、printf和scanf的使用
printf和scanf的功能這里不再描述,在你工程運(yùn)用中會(huì)逐漸明白他的用途,我們這里提供例程代碼并講述一下他們的簡(jiǎn)單使用方法。
我們?cè)趯?shí)際應(yīng)用中,常用的應(yīng)該是printf這個(gè)函數(shù),而scanf這個(gè)函數(shù)比較少見(jiàn),但也是有些地方可以使用的,比如要在某個(gè)地方傳遞參數(shù),可以通過(guò)scanf輸入?yún)?shù),以便調(diào)試。
在STM32工程代碼中簡(jiǎn)單的應(yīng)用:
通過(guò)scanf輸入一個(gè)字符,通過(guò)pringf打印輸入的字符,代碼如下:
char GetData;
While(1)
{
scanf("%c", &GetData);
printf("GetData = %c\n", GetData);
}
基于STM32F103的實(shí)例代碼(其他配置原理一樣)我已近打包分享給大家:
基于Keil工具的代碼:
http://pan.baidu.com/s/1kUELHnL
基于IAR工具的代碼:
http://pan.baidu.com/s/1nuILwed
-
STM32
+關(guān)注
關(guān)注
2312文章
11183瀏覽量
374342 -
C語(yǔ)言
+關(guān)注
關(guān)注
183文章
7645瀏覽量
146034 -
Printf
+關(guān)注
關(guān)注
0文章
84瀏覽量
14803
發(fā)布評(píng)論請(qǐng)先 登錄
求助STM32H563關(guān)于LWESP配置UART問(wèn)題
【正點(diǎn)原子STM32N647開發(fā)板試用】--開箱與開發(fā)環(huán)境搭建
linux-arm開發(fā)環(huán)境的簡(jiǎn)單配置
當(dāng)RA MCU遇見(jiàn)Zephyr系列(3)——在Vs code中配置Zephyr集成開發(fā)環(huán)境
在ADS編譯器中,用標(biāo)準(zhǔn)的C庫(kù)函數(shù)printf()需要哪些設(shè)置呢?
scanf函數(shù)介紹
求助,關(guān)于C代碼中的printf打印的疑問(wèn)求解
Arty移植蜂鳥E203后,發(fā)現(xiàn)不支持scanf函數(shù),怎么解決?
Proteus中配置STM32外部時(shí)鐘HSE如何配置
printf函數(shù)在hbird SDK中的應(yīng)用
STM32 Nucleo-144開發(fā)板技術(shù)解析與應(yīng)用指南
對(duì)于在STM32CubeMx使用FMC中的NAND FLASH里面配置這些時(shí)間有什么說(shuō)明嗎?
瑞薩RA單片機(jī)在e2 studio環(huán)境下printf編譯出錯(cuò)的問(wèn)題解析
關(guān)于 printf和scanf在開發(fā)STM32中的配置和應(yīng)用
評(píng)論