stm32 串口通信数据移位寄存器_浅谈STM32串口通信(一)基本介绍和一个字节传输的实现...

本文详细介绍了STM32串口通信的基本概念,包括传输引脚、如何发送和接收一个字节。通过配置波特率和停止位,利用移位寄存器在每个时钟沿触发移位,实现数据的发送。同时,提供了一段STM32F1串口1的初始化和发送、接收字节的代码示例,帮助读者深入理解串口通信的工作原理。
摘要由CSDN通过智能技术生成

0 传输引脚

串口收发共需要三根线

其中,TX脚为发送引脚, RX脚为发送引脚, GND为地, 作为电平的参考. 如果A发B收, 只需要连接两条线: A的TX连接B的RX, 以及GND相连即可

1 传输一个字节

1.1 发送一个字节

首先, 从传输一个字节开始说起. 抛开奇偶校验,多个停止位的情况, 假设, 我们设置一帧数据有十位, 里边包含一个起始位, 八个数据位, 还有一个停止位. 那么,我们发送一个字节, 只需要一次传输.

我们以传输0x01为例, 它的时序图如下

那怎么把这个字节变成时序呢? 发送器会帮我们完成. 只要配置好相应的波特率和停止位等即可. 发送器在起始位之后, 加入0x01对应的八个数据位, 最后加上停止位, 即可完成发送一个字节的时序. (0x01会通过发送数据寄存器(TDR), 存放到移位寄存器, 在每个时钟沿触发移位).

1.2 接收一个字节

我们以接收0x01为例(假设接收来自1.1的时序).首先我们必须设置波特率, 停止位位数, 跟接收到的时序保持一致.

那接收这边怎么知道对方是时序是什么意思呢? 波特率一致. 假设波特率为9600, 那么发送一个位需要的时间位1/9600 秒. 当RX脚检测到起始位(一个位的低电平, 持续1/9600秒), 就知道, 接下来的1/9600秒, 传输的是数据位的第一位, 再接下来的1/9600秒, 传输的是数据位的第二位… 这样即可通过移位寄存器在合适的时间去读取电平, 并保存0x01到接收数据寄存器(RDR). 我们通过程序去读取RDR即可得到0x01.

2 代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值