stm32学习笔记之串口通信

本篇文章主要讲解一个在开发过程中经常使用到的一个外设—串口。

串口是绝大多数 MCU 中不可或缺的一个外设,同时也是我们开发中经常使用的一种调试手段,所以在STM32的学习中,串口的配置使用也是必须要掌握的。那么,对于新手来讲,串口是什么呢?串口是串行通信接口的简称,即是一种采用串行通信方式的扩展接口,那么什么又是串行通信呢??

stm32学习笔记之串口通信_第1张图片

所谓串行通信就是,在一根数据线上,数据进行一位一位的发送或接收,从而实现双向通信,它适用于远距离数据传输,但缺点是传输速度较慢。

在STM32中,我们使用的是通用同步异步收发器(USART),通信协议采用异步串行通信。什么又是异步串行通信呢?

stm32学习笔记之串口通信_第2张图片

我们可以看到它的数据帧 示意图,它每次通信只传输一字节数据,也就是8位数据,由起始位、数据位、校验位、停止位组成,数据传输方式有单工、半双工、全双工3种。

简单来讲,单工就是只有发送方向接收方传输数据的单向通信;半双工是某一时刻由发送方向接收方传输数据的双向通信的方式;全双工就是发送方与接收方可以同时发送或接收数据,从而实现双向通信。

在看实例之前我们先查看下原理图。

stm32学习笔记之串口通信_第3张图片

根据原理图可知,我们所使用的是串口1,所用到的GPIO口为 PA9和PA10,其中,PA9为发送端,PA10为 接收端,接着我们再来看下它的模式配置,根据《STM32F10xxx参考手册》,要配置为全双工模式,它的TX端为推挽复用输出,RX端为浮空输入或带上拉输入。

了解了上述要点,我们结合实例来学习它的配置流程。

① 本讲学习串口这个外设,因此要添加外设的库函数文件。打开串口源文件,来看串口的配置流程。先定义一个GPIO结构体变量,接着在定义串口的结构体变量,接下来配置时钟。注意:不要忘记使能串口的时钟。

② 在下面分别配置 TX RX端口,模式一个为复用推挽输出,一个为浮空输入。其他配置和之前一样。

③ 接着初始化串口的成员变量。首先,模式配置为既有发送又有接收模式,较验配置为无检验,下面的波特率这个参数,为了后续使用的便利性,这里不直接写死,而是传入一个形参,接着停止位为1位字长为 8位,然后为无硬件数据流控制,最后完成串口的初始化配置。

④ 打开 main.c 文件,主函数中,首先仍是调用相关外设的初始化。注意:串口初始化不要忘了传入它的波特率参数,然后在主循环中,先定义了一个变量,接着是用户灯的一个闪烁,然后是等待我们输入一字节数据,接收成功后,它会将这个数据返回发送,我们利用一个串口助手来完成这个实验。

⑤ 编译下载之前,检查下载器中的串口与实验板的接线图。

stm32学习笔记之串口通信_第4张图片

⑥ 确认正确接线后,我们编译工程并将代码下载到实验板中。接着打开串口助手,检查是否识别到当前的端口号,正确选择后再检查串口的配置。所有都正确配置后,打开串口,在发送区发送一个字符,这时可以观察到接收区收到了它发送的字符,同时用户灯也会闪烁一次,这样就说明我们的串口通信是成功的。

视频资料

通信协议 - UART串口协议

http://www.makeru.com.cn/live/3576_1437.html?s=45051

stm32之SPI通信

http://www.makeru.com.cn/live/3523_1795.html?s=45051

SPI通信协议驱动norFlash

http://www.makeru.com.cn/live/4034_2151.html?s=45051

(DMA专题讲解)

http://www.makeru.com.cn/live/1392_1048.html?s=45051

系统移植(告别裸奔)

http://www.makeru.com.cn/live/1392_450.html?s=45051

资料下载学习交流群:830802928

你可能感兴趣的:(stm32,串口通信,单片机,嵌入式,stm32)