萌新的STM32学习25- USART寄存器的介绍
STM32–USART寄存器介绍(F1)
 
 控制寄存器1 (CR1)
 位13: 使能USART UE
0: USART分频器和输出被禁止
 1: USART模块使能
位12 : 配置8个数据位 M
 该位定义了数据字的长度,由软件对其设置和清零
 0: 一个起始位,8个数据位,n个停止位
 1: 一个起始位,9个数据位,n个停止位
 有效数据位一般来说都选用8个位

 位10 : 禁止检验控制 PCE
0: 禁止校验控制
 1: 使能校验控制
位5 :RXNEIE 使能接收缓冲区非空中断
0: 禁止产生中断
 1: 当USART_SR 的ORE或者RXNE为 1 时, 产生USART 中断
位3 : TE 使能发送
 0: 禁止发送
 1:使能发送
位2 : 使能接收
 0 : 禁止接收
 1: 使能接收,并开始搜寻RX引脚上的起始位
UE 为串口使能位,通过该位置 1,使能串口。
 M 为字长,当该位为 0 的时候设置串口为 8 个字长外加 n个停止位,停止位的个数(n)是根据 USART_CR2 的[13:12]位设置来决定的,默认为 0。
 PCE
 为校验使能位,设置为 0,即禁止校验,否则使能校验。
 PS 为校验位选择,设置为 0 为偶校验,
 否则奇校验。TXIE 为发送缓冲区空中断使能位,设置该位为 1,当 USART_SR 中的 TXE 位为
 1 时,将产生串口中断。TCIE 为发送完成中断使能位,设置该位为 1,当 USART_SR 中的 TC
 位为 1 时,将产生串口中断。RXNEIE 为接收缓冲区非空中断使能,设置该位为 1,当 USART_SR
 中的 ORE 或者 RXNE 位为 1 时,将产生串口中断。TE 为发送使能位,设置为 1,将开启串口
 的发送功能。RE 为接收使能位,用法同 TE。、
对于另外一个控制寄存器2 CR2
 我们只用到 了 位13 12
 
 位13:12
 就是STOP停止位
 用这两位来设置停止位的位数
 00 : 1个停止位
 01 : 0.5个停止位
 10 : 2个停止位
 11 : 1.5个停止位
 这个该寄存器需要完成的配置是: 配置1个停止位
 注: UART4 和UART5 不能用0.5停止位和1.5停止位
控制寄存器CR3
 我们只使用它的位3
 
 我们对HDSEL的配置选择 半双工选择
 0 : 不选择半双工模式
 1 : 选择半双工模式
 
 这里有9个位
 我们听从上面CR1的安排 如果CR1指示为8 那我们只是用[7;0]
状态寄存器SR
 
 位5: RXNE(读数据寄存器非空)
当该位被置 1 的时候,就是提示已经有数据被接收到了,并且可以读出来了。这时候我们要做的就是尽快去读取 USART_DR,通过读 USART_DR 可以将该位清零,也可以向该位写 0,直接清除。
 用通俗的话来说就是当这个位是1的时候表明读数据寄存器非空 就是有东西在DR上面 我们可以把它赶紧读出来
 0: 数据没有收到
 1: 收到数据,可以读出
位6:TC(发送完成)
 当该位被置位的时候,表示 USART_DR 内的数据已经被发送完成了。如果设置了这个位的中断,则会产生中断。该位也有两种清零方式:
 1)读 USART_SR,写 USART_DR。
 2)直接向该位写 0
0 : 发送还未完成
 1 : 发送完成
根据TC位我们可以知道能否发数据
 根据RXNE位我们知道是否收到数据
 