Ⅰ、寫在前面
在我們學習C語言的時候都應該知道printf和scanf這個函數(shù),但是你們在開發(fā)中經(jīng)常使用這個函數(shù)嗎?
在我們購買開發(fā)板配套例程以及在網(wǎng)上找的例程中或許會見到使用printf函數(shù)的地方,就有許多人問,這個printf和scanf是如何配置才能使用的?
printf和scanf串口打印功能對于學習開發(fā)的朋友是一種很好的工具,在沒有顯示屏或更多表現(xiàn)你程序運行結果的時候,用它打印信息就能很好地解決這個問題。在實際項目中,用于打印某段程序運行狀態(tài),也能幫你快速判斷程序的正確性。
Ⅱ、printf和scanf的配置
printf和scanf都知道他們是“標準函數(shù)接口”,源代碼的實現(xiàn)過程就不用我們自己寫,只需要調(diào)用就行了。
printf和scanf在軟件中要實現(xiàn)其功能,就需要對軟件及工程進行配置,我們下面講述一下常規(guī)的配置。
配置分使用微庫和不使用微庫兩種方法,不使用微庫就是需要在代碼中多添加一段代碼,由于使用“標準函數(shù)接口”這種方式與編譯工具關系很緊密,在不同 編譯器上實現(xiàn)的方式存在不同(意思就是通用性不是很強),所以不建議使用這種方法。因此,我們講述使用微庫配置的方法。
1.使用微庫
我們講述MDK-ARM 和 EWARM下的配置。
MDK-ARM的使用微庫:
Project -> Options for Target -> Target 勾選上“Use Micro LIB”,如下圖:
EWARM的使用微庫:
Project -> Options -> General Options -> Library Configuration 選中“Full”,如下圖:
2.串口重定義
由于我們使用的是USART串口進行打印數(shù)據(jù),則需要使用串口重定義。其實很簡單,就是要在源代碼中重定義兩個函數(shù):int fputc(int ch, FILE *f)和int fgetc(FILE *f)
在STM32工程中:
Ⅲ、printf和scanf的使用
printf和scanf的功能這里不再描述,在你工程運用中會逐漸明白他的用途,我們這里提供例程代碼并講述一下他們的簡單使用方法。
我們在實際應用中,常用的應該是printf這個函數(shù),而scanf這個函數(shù)比較少見,但也是有些地方可以使用的,比如要在某個地方傳遞參數(shù),可以通過scanf輸入?yún)?shù),以便調(diào)試。
在STM32工程代碼中簡單的應用:
通過scanf輸入一個字符,通過pringf打印輸入的字符,代碼如下:
char GetData;
While(1)
{
scanf("%c", &GetData);
printf("GetData = %c\n", GetData);
}
基于STM32F103的實例代碼(其他配置原理一樣)我已近打包分享給大家:
基于Keil工具的代碼:
http://pan.baidu.com/s/1kUELHnL
基于IAR工具的代碼:
http://pan.baidu.com/s/1nuILwed
-
STM32
+關注
關注
2272文章
10924瀏覽量
357608 -
C語言
+關注
關注
180文章
7614瀏覽量
137739 -
Printf
+關注
關注
0文章
83瀏覽量
13732
發(fā)布評論請先 登錄
相關推薦
試用報告1--關于PG2L100H開發(fā)板啟動選項配置的問題
stdio.h實現(xiàn)了printf函數(shù)?
51單片機中為什么很少出現(xiàn)printf的身影
![51單片機<b class='flag-5'>中</b>為什么很少出現(xiàn)<b class='flag-5'>printf</b>的身影](https://file1.elecfans.com/web3/M00/00/D3/wKgZPGdOcWOAYumHAAAGbaPdCx0068.png)
HAL庫在STM32開發(fā)中的重要性
stm32 GPIO中斷配置教程
關于使用DAVE 4開發(fā)XMC4200時UART打印的問題求解
芯海通用 MCU應用筆記 :在 IAR 及 MDK 開發(fā)環(huán)境下使用 printf 函數(shù)重定向移植差異指南
C語言嵌入式軟件開發(fā)常見誤解與誤區(qū)
![C語言嵌入式軟件<b class='flag-5'>開發(fā)</b>常見誤解與誤區(qū)](https://file1.elecfans.com/web2/M00/DF/11/wKgaomYt9ZOAWSZhAAASdXPl1QM741.jpg)
為何scanf函數(shù)的參數(shù)需要取地址?
在macos下SW4STM32編譯,調(diào)用printf異常怎么解決?
使用cubeIDE配置的工程中printf在FreeRTOS線程任務中無法使用怎么解決?
stm32f103rct6 prinrf可以正常使用,但是無法使用getchar和scanf函數(shù),為什么?
STM32的疑難雜癥之一:Printf的使用
![<b class='flag-5'>STM32</b>的疑難雜癥之一:<b class='flag-5'>Printf</b>的使用](https://file.elecfans.com/web2/M00/20/B3/pYYBAGGfNNmAK-PZAAJsGM5Cgk0227.jpg)
評論