USART的寄存器

串口双向通信至少需要两个引脚 接收数据RX和发送数据TX
串口外设主要由三部分组成,分别是波特率的控制部分,收发控制部分和数据存储转移部分

波特率控制

波特率也就是串口每秒传输的二进制位数,可以叫做码元率,与比特率有一定的区别。由于异步串口没有时钟,所以两边要先对码元进行约定。波特率的控制主要由波特率寄存器 USART_BRR控制,用来设置波特率

收发控制

收发控制主要由三个控制寄存器CR1,CR2,CR3以及一个状态寄存器SR,
通过判断状态寄存器中相应的状态,用控制寄存器进行控制。
主要关注SR的5,6位RXNE(读数据寄存器非空),当该位被置 1 的时候,就是提示已经有数据被接收到了,并且可以读出来了。这时候我们要做的就是尽快去读取 USART_DR,通过读 USART_DR 可以将该位清零,也可以向该位写 0,直接清除。
TC (发送完成),当该位被置位的时候,表示 USART_DR 内的数据已经被发送完成了。如果设置了这个位的中断,则会产生中断。该位也有两种清零方式:1)读 USART_SR,写USART_DR。2)直接向该位写 0。

数据存储转移控制

主要由数据寄存器DR和移位寄存器组成,发送数据时,自动将TDR的数据加载到发送移位寄存器中,然后通过串口 一位位发送出去,在数据从 TDR 转移到移位寄存器时,会产生发送寄存器TDR 已空事件 TXE,当数据从移位寄存器全部发送出去时,会产生数据发送完成事件 TC,这些事件可以在状态寄存器中查询到。

寄存器

状态寄存器

只有0到9位使用,每一位都是一个状态标记,常用的主要是TC和RXNE。
TC:发送数据。 0表示发送未完成,1表示发送完成
RXNE:接收数据。0表示还未收到数据,1表示收到数据。这时候读取USART_DR,从而将该位清零,也可以向该位写0,直接清除
在这里插入图片描述

数据寄存器

数据寄存器有两个寄存器构成,TDR和RDR,分别用来处理发送和接收的数据。对数据寄存器DR进行读操作时候,相当于对接收数据寄存器RDR进行读操作。对数据寄存器DR进行写操作时候,相当于对发送数据寄存器TDR进行写操作。
在这里插入图片描述

波特比率寄存器

BRR由DIV_Mantissa(整数部分)和DIV_Fraction(小数部分)构成。写入一定的值来进行波特率的配置
在这里插入图片描述
配置公式
USARTDIV就是小数部分加整数部分的值
在这里插入图片描述
比如:
已知串口挂在72MHZ的时钟上,且要配置的波特率位9600.
USARTDIV= 72000000/(960016)=468.75d。
所以小数部分写入:0.75
16=12=0xC
整数部分写入:468=0x1D4
参考
在这里插入图片描述

三个控制寄存器

主要是设置USART使能、检验控制使能、校验选择(奇校验偶校验)、PE中断使能、发送缓冲区空中断使能、发送完成中断使能、接收缓冲区非空使能、发送使能、接受使能、字长等。
在这里插入图片描述

保护时间和预分频寄存器

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工农村贴膜小哥

我倒是要看看是那个憨憨在给我打

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值