《SLAM导航机器人基础》第三章:单片机与STM32:串口Printf打印实验

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("\r\n");             //换行使用\r\n
    printf("类型数据输出:a=%u,b=%d,c=%f \r\n",a,b,c);     //无符号整形%u,有符号整形%d,浮点数%f
    printf("进制数据输出:a=十进制%u,十六进制%X\r\n",a,a);  //十六进制表示用%X或%x
    printf("数据占位输出:a=%5u,b=%5d,c=%3.2f \r\n",a,b,c);//整型数字用一个数字表示位置数,浮点数用两个数字分别表示整数部分(包括小数点)和小数部分的显示位置数
    
}

(3)实验结果如下,注意不用勾选“HEX显示”。

 

posted @ 2020-07-25 21:50  baronluu  阅读(584)  评论(0编辑  收藏  举报