[Keil学习]printf,scanf函数的⽤法
C语⾔库函数中有⼀批“标准输⼊输出函数”,它是以标准的输⼊输出设备(⼀般为终端设备)为输⼊输出对象的,其中⽤得⽐较多的是printf 和scanf函数了。
在嵌⼊式设备中加⼊C语⾔的标准输⼊输出函数,对调试是很有帮助,这样就可以通过串⼝来显⽰结果。根据Keil的帮助⽂档,虽然printf和scanf函数的⾼层部分和所使⽤的⽬标硬件没有关系,但是底层部分(物理层)却与所使⽤的硬件密切相关,因此在使⽤这两个函数之前,需先将与底层相关的程序写好(⼀般是串⼝的初始化函数),放到合适的地⽅。
以LM4F120 Cortex-M4⽬标芯⽚为例,来说明printf, scanf函数的使⽤⽅法。
Step 1. 编写以下两个输⼊输出函数
1int fputc(int ch, FILE *f)
2 {
3    UARTCharPut(UART1_BASE, ch);
4 }
5
6int fgetc(FILE *f)
7 {
8return UARTCharGet(UART1_BASE);
9 }
上⾯代码中L3是LM4F120 通过串⼝发送⼀个字符串的函数,L8是通过串⼝接收⼀个字符串的函数(该函数会⼀直等待直到接收到数据)Step 2. 按照下图配置⼯程
Step 3. 添加头⽂件<stdio.h>后即可使⽤
1int
2 main(void)
3 {
4char 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
18while(1);printf函数是如何实现的
19 }