查看原文
其他

STM32最小系统板教程第三章第3讲|STM32 UART串口通信

电子开发学习 电子开发学习 2021-01-31

置顶公众号,不错过每一讲内容。




完整课程体系(公众号每日更新一讲):



本讲知识点:串口简介、串口的使用、printf重定向



3.3.1   串口简介


串口是任何MCU中不可或缺的一个外设接口,也是我们开发中的重要调试手段,因此它的重要性不言而喻,这也是大家必须掌握的一个知识点。

串口通信采用的是串行通信,其通信示意图如下所示:


图3-3-1 串口通信


串行通信的特点:数据在一根数据线上依次逐位发送或接收,因此它的控制复杂,传输速度慢,但是适用于远距离传输。


我们所使用的串口(USART)又称为通用同步异步收发器,我们所使用的是异步串行通信,异步串行通信示意图如下所示:


 


图3-3-2 异步串行通信


异步串行通信的特点:它是指发送和接收端使用各自的时钟,是不连续传输的通信方式,一次通信只传输一个字符数据,称为字符帧。字符帧之间可以是任意间隙,字符帧的组成如上图所示。串行通信的数据传输方向可以分为单工、半双工、全双工传输,如下图所示:


图3-3-3 数据传输方式


简单了解了串口通信后,我们开始软件配置来实现串口通信。


3.3.2   串口软件配置


与之前一样,我们复制一份上一讲的代码,在此基础上编写本讲代码,首先我们添加usart.c和usart.h文件并加入到工程中,还不熟悉的朋友可以看看之前的讲解,其次,我们还需要添加USART的库函数,这里将添加完毕的结果贴图如下:



图3-3-4 usart.c、usart.h的添加


在编写之前,同样我们先看下原理图,本讲我们使用的是串口1,因此使用的是PA9和PA10两个引脚,同时根据《STM32F10xxx参考手册》第110页,串口外设的GPIO配置可以知道PA9和PA10的模式配置,如下图所示:


图3-3-5 串口1接口


图3-3-6 串口GPIO模式配置


根据串口模式配置,我们将其配置为全双工模式。还是先初始化串口所对应的引脚,再初始化串口这个外设,配置好的代码贴图如下:


图3-3-7 串口1引脚配置


接下来我们在主函数里调用串口库函数里的接收、发送函数,来实现在串口助手发送一个字符,单片机接收到后在转发到串口助手显示的效果,代码贴图如下:



仿真器与核心板的串口接线图如下:


图3-3-8 串口接线图


接着,我们打开串口调试助手,配置如下:



图3-3-9 串口实验


大家可以根据步骤自己动手配置来实现这个实验,加强学习效果。


3.3.3   printf重定向


接下来给大家介绍一种常用的调试函数printf函数,在STM32中如果不把printf重定向到USART1上,则无法将printf中的信息输出显示到电脑端的串口助手上,因此,我们需要加入重定向的一段代码,可以放在任何.c(源文件)里,这里我们就放在usart.c中,如下图所示:


图3-3-10 重定向代码


我们在主函数中只留下GPIO翻转的代码,其余的注释掉,添加printf()函数,勾选Use MicroLIB,编译后下载到核心板,观察现象:


 

图3-3-11 printf函数打印实验


本讲内容就到这里,大家亲自动手实践一下吧 


视频课程(点击文末左下角“阅读原文”,可看高清视频):

https://v.qq.com/txp/iframe/player.html?vid=l0736m6p5ea&width=500&height=375&auto=0


最小系统板的购买链接(复制到淘宝打开即可):

https://item.taobao.com/item.htm?&id=573256065703


elink32仿真器购买链接(复制到淘宝打开即可):

https://item.taobao.com/item.htm?&id=558334383550


课程系列回顾:


STM32最小系统板教程第一章|开发板资源介绍

STM32最小系统板教程第二章|软件开发环境的介绍与安装

STM32最小系统板教程第二章第2讲|工程模板的搭建

STM32最小系统板教程第三章第1讲|从“点灯”入门STM32

STM32最小系统板教程第三章第2讲|STM32时钟系统及实现准确延时





感谢您阅读“电子开发学习”的文章,如果您觉得图文能帮助您学习,欢迎关注我们。请点击右上角按钮,选择“查看公众号”,再点击关注即可。或者可以通过搜索公众号的方式关注: electricstudy  。您可以通过扫码下面的二维码关注我们。如果您想阅读往期文章,可点击“查看历史消息”。





历史好文推荐(点击文章标题可跳转):

小马哥四轴硬件第1讲、    Altium Designer安装与介绍

小马哥四轴硬件第2讲上、原理图讲解之MCU最小系统讲解

小马哥四轴硬件第2讲下、原理图各模块讲解

小马哥四轴硬件第3讲上、AD库制作之原理图库的制作

小马哥四轴硬件第3讲下、AD库制作之PCB封装库的制作

小马哥四轴硬件第4讲上、原理图绘制

小马哥四轴硬件第4讲下、原理图绘制

小马哥四轴硬件第5讲、    用CAD绘制小四轴PCB外形

小马哥四轴硬件第6讲、    四轴PCB板元器件布局

小马哥四轴硬件第7讲上、PCB布线与2.4G模块布线

小马哥四轴硬件第7讲下、PCB布线之电源布线与敷铜

小马哥四轴硬件第8讲、    四轴四层板PCB板设计

小马哥四轴硬件第9讲、    原理图及PCB的检查

C#上位机开发1 |  Hello World!

AD学习—STM32F103最小系统板制作

新手上手STM32是学习库开发还是寄存器开发?

openmv学习2-寻找色块并打印出坐标

如何解决单片机下载程序失败的问题(文末有彩蛋)

如何让Arduino IDE支持你手里的STM32 nucleo开发板

新手如何使用STM32两个月内做出自己的空心杯小四轴(1)

新手如何使用STM32两个月内做出自己的空心杯小四轴(2)

新手如何使用STM32两个月内做出自己的空心杯小四轴(3)

新手如何使用STM32两个月内做出自己的空心杯小四轴(4)

如何根据芯片手册时序图编写驱动程序

双轮平衡车暴力拆解


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存