[Keil 學習] printf, scanf函數的用法


C語言庫函數中有一批“標准輸入輸出函數”,它是以標准的輸入輸出設備(一般為終端設備)為輸入輸出對象的,其中用得比較多的是printf和scanf函數了。

在嵌入式設備中加入C語言的標准輸入輸出函數,對調試是很有幫助, 這樣就可以通過串口來顯示結果。根據Keil的幫助文檔,雖然printf和scanf函數的高層部分和所使用的目標硬件沒有關系,但是底層部分(物理層)卻與所使用的硬件密切相關,因此在使用這兩個函數之前,需先將與底層相關的程序寫好(一般是串口的初始化函數),放到合適的地方。

 

以LM4F120 Cortex-M4目標芯片為例,來說明printf, scanf函數的使用方法。

 

Step 1. 編寫以下兩個輸入輸出函數

1 int fputc(int ch, FILE *f)
2 {
3     UARTCharPut(UART1_BASE, ch);
4 }
5 
6 int fgetc(FILE *f)
7 {
8   return UARTCharGet(UART1_BASE);
9 }

上面代碼中L3是LM4F120 通過串口發送一個字符串的函數,L8是通過串口接收一個字符串的函數(該函數會一直等待直到接收到數據)

 

Step 2. 按照下圖配置工程

 

Step 3. 添加頭文件<stdio.h>后即可使用

 1 int
 2 main(void)
 3 {
 4     char ubuf[20];
 5 
 6     /* 設置系統時鍾為 50MHz */
 7     SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);
 8     
 9     /* 初始化串口 */
10     InitConsole();
11 
12     /* 輸入一個字符串 */
13     scanf("%s", ubuf);
14 
15     /× 顯示輸入的字符串 */
16     printf("%s", ubuf);
17     
18     while(1);
19 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM