【【萌新的STM32学习25--- USART寄存器的介绍】】

萌新的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位我们知道是否收到数据

相关推荐
追兮兮12 小时前
MCUQuickStart v1.1.0发布,一键生成Keil工程+RTOS模板
stm32·单片机·嵌入式硬件·freertos·gd32·keil5
国科安芯12 小时前
ASP7A84AS与主流架构兼容替代及系统级电源完整性解决方案的深度研究
单片机·嵌入式硬件·架构
kaikaile199512 小时前
STC8单片机实现简单花样DMX512控制器
单片机·嵌入式硬件
rit843249912 小时前
STM32移植NES模拟器指南
stm32·单片机·嵌入式硬件
都在酒里12 小时前
STM32 I2C通信协议详解——标准库函数实现(通讯协议总结一)
stm32·嵌入式硬件·i2c
前端若水12 小时前
从零开始学习AI Agent的实战路线图
人工智能·学习
fengfuyao98513 小时前
STM32 HAL库实现串口DMA接收不定长数据
stm32·单片机·嵌入式硬件
yuan1999713 小时前
STM32直流无刷电机六拍方波控制器程序
stm32·单片机·嵌入式硬件
魔法阵维护师13 小时前
从零开发游戏需要学习的c#模块,第十一章(rpg小游戏入门,上篇,地图与移动)
学习·游戏·c#