第一:串口格式化基本简介
前面虽然实现了串口的功能,但是只能输出字符。如果需要输出数字的时候需要自己将数字转换为字符,非常不方便。可以模仿单片机将printf函数映射到串口上,这样就可以使用printf函数来完成格式化输出了。
格式化函数包括printf、sprintf和scanf这样的函数,分为格式化输入和输出两类函数。学习C语言的时候常常通过printf函数在屏幕上显示字符串,通过scanf函数从键盘获取输入。这样就有了输入和输出,实现了基本的人机交互,那么我们也可以将printf函数映射到串口上,这样就可以使用超级终端作为开发板的终端,完成与开发板的交互。
第二:实验程序的操作
在进行移植的过程中,需要使用到相应的源码文件,文件夹stdio里面的文件就是我们要移植的源文件。stdio里面有两个文件夹:include 和 lib,这两个文件夹里面的内容如下:
stdio 里面的文件其实是从 uboot 里面移植过来的。后面学习 uboot 以后大家有兴趣的话可以自行从 uboot 源码里面“扣”出相应的文件,完成格式化函数的移植。这里要注意一点,stdio 中并没有实现完全版的格式化函数,比如 printf 函数并不支持浮点数,但是基本够我们使用了。
第三:具体的代码实现
#include "stdio.h" #include "uart.h" int main(void) { unsigned char state = OFF; int a, b ; uart_init(); //初始化串口,对应的波特率115200 while(1) { printf("输入两个整数, 使用空格隔开:"); scanf("%d %d",&a,&b); //输入两个整数 printf("\r\n数据 %d + %d = %d\r\n",a,b,a+b); //输出和 state = !state; } return 0; }
总结:串口中的功能函数,可以通过移植的方式实现,利用其中的函数,可以将字符串的信息进行输出和打印。