STM32标准库_07 | 多串口Printf打印与重映射

本篇文章主要介绍STM32的多串口Printf打印,因为在实际项目中可能会遇到,几个串口需要打印不同类型的数据(如字符串%s,浮点型 %f等),或者是用到了AT指令的模组,因此Printf打印就十分的方便,所以今天讲一讲如何实现多串口Printf打印。还有就是在项目中因为布线问题,我们收到的原理图往往有些引脚被映射到其他引脚上而实现串口,PWM等功能,所以今天也讲讲引脚的重映射,希望能给人以收获。

1.开发环境

软件环境

使用MDK5.25版本,芯片包为STM32F4系列。

硬件环境

开发板:STM32F407VGT6开发板,是一款大容量芯片,最高能跑168MHz。

烧录器:STlink或者Jlink。

2.工程搭建

直接复制第三篇串口printf打印的代码先实现引脚重映射,然后再实现多串口Printf打印。

关于端口复用与重映射

(1).端口复用: STM32有很多内置外设如(串口,SPI等)复用到GPIO引脚上,便能达到节省引脚的作用,我们可以在使用的时候选择对应引脚的功能。

(2).重映射: 重映射分为没有重映射、部分重映射和完全重映射,在STM32F1定时器上体现的更为明显(然而STM32F4一般只有一个重映射),而且重映射一般不适用36个引脚的芯片,一般适用于64引脚及以上的芯片(具体查阅芯片手册)。

串口1重映射

查看映射表看USART1除了PA9,PA10之外还能被重映射到哪些引脚上。

由映射表可以得出我们可以把串口1重映射到PB6,PB7引脚上。

串口初始化

看原理图找PB6,PB7引脚测试是否重映射成功。

外接了一个CH340,记得TX接芯片RX,RX接芯片TX。

多串口Printf实现

所用到的知识还是C语言中的函数可变参数。首先要包含头文件"stdarg.h"

然后编写我们的Printf函数,兼容多串口(注意:对应的串口要先初始化)。

3.测试

将我们之前在主循环的print打印函数换成我们刚写好的Printf可变参函数。

4.总结

如果打印的数据比较长的话,一定要把用于打印的字符串数组的数组长度加大,不然会出错导致乱码或者死机,还有就是vsprintf函数可能会出现内存溢出的情况,所以更建议使用vsnprintf,希望大家自行了解,权衡修改。

代码已全部上传到gitee,希望各位小伙伴们在下载的同时不忘点击Star,地址:https://gitee.com/Notmi/stm32-standard-peripheral-libraries

posted @   半截心跳  阅读(2698)  评论(1编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示