3.5节串口Printf打印实验
我们在上一节内容里使用了串口,但输出的数据是十六进制数据,难以阅读,在我们想使用串口打印调试信息时并不合适,在这种情况下,我们可以使用printf函数。
a.实验准备:USB转串口模块,ST-Llink下载器,CHEAPX机器人控制板
b.实验目的:使用STM32串口进行printf打印
c.相关知识点:
printf函数的使用,主要需要学习输出格式,详情在程序中介绍。我们在必应或百度上输入搜索关键字“printf输出格式”,就可以获得很多相关介绍。
d.编程及运行
(1)基于3.5节串口收发实验的程序进行修改,增加如下函数,即能使用printf()函数。
//重定义fputc函数 int fputc(int ch, FILE *f) { while((USART1->SR&0X40)==0);//等待发送完毕 USART1->DR = (u8) ch; return ch; }
(2)编写主函数
//串口Printf打印实验 int main(void) { u8 a = 10; s8 b = -10; float c = 11.1; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //PriorityGroupConfig NVIC中断分组设置 组2(2位抢占优先级,2位响应优先级) initDebugSerial(500000); showVersion();//显示版本 printf("串口Printf打印实验");//打印字符,直接在双引号内填写内容 printf(" "); //换行使用 printf("类型数据输出:a=%u,b=%d,c=%f ",a,b,c); //无符号整形%u,有符号整形%d,浮点数%f printf("进制数据输出:a=十进制%u,十六进制%X ",a,a); //十六进制表示用%X或%x printf("数据占位输出:a=%5u,b=%5d,c=%3.2f ",a,b,c);//整型数字用一个数字表示位置数,浮点数用两个数字分别表示整数部分(包括小数点)和小数部分的显示位置数 }
(3)实验结果如下,注意不用勾选“HEX显示”。