STM32F7--->串口相关,串口的所有寄存器详讲

2023-05-16

文章目录

  • 串口相关寄存器
    • 串口控制寄存器
      • CR1
      • CR2
      • CR3
    • 波特率寄存器   BRR
    • 保护时间和预分频寄存器   GTPR
    • 接收超时寄存器   RTOR
    • 请求寄存器   RQR
    • 中断和状态寄存器   ISR
    • 中断标志清零寄存器    ICR
    • 接收数据寄存器   RDR
    • 发送数据寄存器    TDR
  • 相关中断
  • USART TXE和TC的用法

串口相关寄存器

在这里插入图片描述

串口控制寄存器

STM32F767 的每个串口都有 3 个控制寄存器 USART_CR1~3,串口的很多
配置都是通过这 3 个寄存器来设置的。

CR1

在这里插入图片描述

名称功能详细介绍使用时注意事项
31~29保留位必须保持复位值
28M1确定字长此位和12位(M0)用于确定字长度,由软件置1或清零
M[1:0] = 00:1 个起始位,8 个数据位,n 个停止位
M[1:0] = 01:1 个起始位,9 个数据位,n 个停止位
M[1:0] = 10:1 个起始位,7 个数据位,n 个停止位
只有在禁止 USART (UE=0) 时才能写入此位。
7 位数据长度模式下,不支持智能卡模式、LIN 主模式和自动波特率(0x7F 帧和 0x55 帧检测)。
27EOBIE块结束中断使能0:禁止中断
1:USARTx_ISR 寄存器中的 EOBF 标志置 1 时生成 USART 中断
如果 USART 不支持智能卡模式,该位保留并由硬件强制清零。
26RTOIE接收器超时中断使能0:禁止中断
1:USARTx_ISR 寄存器中的 RTOF 位置 1 时生成 USART 中断
如果 USART 不支持接收器超时功能,该位保留并由硬件强制清零。
25~21DEAT[4:0]驱动器使能使能时间该 5 位值用于定义激活 DE(启动器使能)信号与起始位开始间的时间。此时间以采样时间单位表示(1/8 或 1/16 位持续时间,具体取决于过采样速率)。只有在禁止 USART (UE=0) 后才能写入此位字段如果不支持驱动器使能功能,该位保留并且必须保持清零。
20~16DEDT[4:0]驱动器使能禁止时间该 5 位值用于定义发送的消息中最后一个停止位结束与取消激活 DE(驱动器使能)信号间的时间。此时间以采样时间单位表示(1/8 或 1/16 位持续时间,具体取决于过采样速率)。如果在 DEDT 时间内对 USARTx_TDR 寄存器执行写操作,则新数据仅在经过 DEDT 和DEAT 时间后才会发送。只有在禁止 USART (UE=0) 后才能写入此位字段
如果不支持驱动器使能功能,该位保留并且必须保持清零。
15OVER8过采样模式0:16 倍过采样
1:8 倍过采样
只有在禁止 USART (UE=0) 时才能写入此位
在 LIN 和 IrDA 模式下,此位必须保持清零。
14CMIE字符匹配中断使能此位由软件置 1 和清零。
0:禁止中断
1:如果 USARTx_ISR 寄存器中的 CMF 位置 1,则生成 USART 中断。
13MME静默模式使能此位用于激活 USART 的静默模式功能,此位置 1 时,USART 可按 WAKE 位定义的方式在活动模式与静默模式之间切换。该位由软件置 1 和清零。
0:接收器永久处于活动模式
1:接收器可在静默模式和活动模式之间切换
12M0确认字长此位和28位共同决定字长,详见28位UE=0时才能进行写入
11WAKE接收器唤醒方法此位用于确定 USART 静默模式的唤醒方法。该位由软件置 1 或清零。
0:空闲线路
1:地址标记
只有在禁止 USART (UE=0) 后才能写入此位字段。
10PCE奇偶校验控制使能该位选择硬件奇偶校验控制(生成和检测)。使能奇偶校验控制时,计算出的奇偶校验位被插入到 MSB 位置(如果 M=1,则为第 9 位;如果 M=0,则为第 8 位),并对接收到的数据检查奇偶校验位。此位由软件置 1 和清零。一旦该位置 1,PCE 在当前字节的后面处于活动状态(在接收和发送时)。
0:禁止奇偶校验控制
1:使能奇偶校验控制
只有在禁止 USART (UE=0) 后才能写入此位字段。
9PS奇偶校验选择该位用于在使能奇偶校验生成/检测(PCE 位置 1)时选择奇校验或偶校验。该位由软件置 1和清零。将在当前字节的后面选择奇偶校验。
0:偶校验
1:奇校验
只有在禁止 USART (UE=0) 后才能写入此位字段。
8PEIEPE中断使能位此位由软件置 1 和清零。
0:禁止中断
1:当 USARTx_ISR 寄存器中 PE=1 时,生成 USART 中断
7TXEIE发送数据寄存器是否为空使能此位由软件置 1 和清零。
0:禁止中断
1:当 USARTx_ISR 寄存器中 TXE=1 时,生成 USART 中断
6TCIE传输完成中断使能此位由软件置1和清零
0:禁止中断
1:当 USARTx_ISR 寄存器中的 TC=1 时,生成 USART 中断
5RXNEIERXNE(接收寄存器不为空)中断使能此位由软件置 1 和清零。
0:禁止中断
1:当 USARTx_ISR 寄存器中的 ORE=1 或 RXNE=1 时,生成 USART 中断
4IDLEIE空闲中断IDLE中断使能此位由软件置 1 和清零。
0:禁止中断
1:当 USARTx_ISR 寄存器中的 IDLE=1 时,生成 USART 中断
3TE发送器使能0:禁止发送器
1:使能发送器
除了在智能卡模式下以外,传送期间 TE 位上的“0”脉冲(“0”后紧跟的是“1”)会在当前字的后面发送一个报头(空闲线路)。为生成空闲字符,TE 不能立即写入 1。为确保所需的持续时间,软件可轮询 USARTx_ISR 寄存器中的 TEACK 位。在智能卡模式下,当 TE 置 1 时,在发送开始前存在 1 位的时间延迟。
2RE接收器使能0:禁止接收器
1:使能接收器并开始搜索起始位
1保留位保留位必须保持复位值
0UEUSART使能位此位清零后,USART 预分频器和输出将立即停止,并丢弃当前操作。USART 的配置保留,但 USARTx_ISR 寄存器中的所有状态标志将设置为其默认值。此位由软件置 1 和清零。
0:禁止 USART 预分频器和输出,低功耗模式
1:使能 USART
为进入低功耗模式而不在线路上生成错误,之前必须复位 TE 位,
并且软件必须等待USARTx_ISR 寄存器中的 TC 位置 1 后才能复位 UE 位。
UE = 0 时也会复位 DMA 请求,因必须在复位 UE 位前禁止 DMA 通道

CR2

在这里插入图片描述

名称功能详细介绍使用时注意事项
31~28ADD[7:4]USART节点的地址此位字段用于指定 USART 节点的地址或要识别的字符代码。此位字段在多处理器通信时于静默模式下使用,以通过 7 位地址标记检测进行唤醒。发送器发送字符的 MSB 应为 1。
此位字段还可用于正常接收和静默模式无效时的字符检测(例如,ModBus 协议中的块结束检测)。种情况下,接收到的整个字符(8 位)将与 ADD[7:0] 值进行比较,如果匹配,CMF 标志将置 1。仅在禁止接收 (RE = 0) 或禁止 USART (UE=0) 时才能写入该位字段
27~24ADD[3:0]USART节点的地址此位字段用于指定 USART 节点的地址或要识别的字符代码。此位字段在多处理器通信时于静默模式下使用,以通过地址标记检测进行唤醒。仅在禁止接收 (RE = 0) 或禁止 USART (UE=0) 时才能写入该位字段
23RTOEN接收器超时使能此位由软件置 1 和清零。
0:禁止接收器超时功能。
1:使能接收器超时功能。使能此功能后,如果 RX 线路在 RTOR(接收器超时寄存器)中编程的持续时间内处于空闲状态(无接收),则 USARTx_ISR 寄存器中的 RTOF 标志置 1。
如果 USART 不支持接收器超时功能,该位保留并由硬件强制清零。
22~21ABRMOD[1:0]自动波特率模式这些位将由软件置 1 和清零。
00:通过测量起始位检测波特率。
01:下降沿到下降沿的测量。(接收到的帧必须以一个等于 1 的位开头,即帧 = 10xxxxxx)
10:0x7F 帧检测。
11:0x55 帧检测。
仅在 ABREN = 0 时或禁止 USART (UE=0) 时才能写入该位字段
如果 DATAINV=1 且/或 MSBFIRST=1,这些模式必须与在线路上时相同,例如 MSBFIRST 的0xAA。
如果 USART 不支持自动波特率功能,则此位保留并由硬件强制清零。
20ABERN自动波特率使能此位由软件置 1 和清零。
0:禁止自动波特率检测。
1:使能自动波特率检测。
如果 USART 不支持自动波特率功能,则此位保留并由硬件强制清零。
19MSBFIRST最高有效位在前0:发送/接收数据时位 0 在前,后跟起始位。
1:发送/接收数据时MSB(位 7/8/9)在前,后跟起始位。
只有在禁止 USART (UE=0) 后才能写入此位字段。
18DATAINV二进制数据反向0:按正/正向逻辑发送/接收数据寄存器中的逻辑数据。(1=H,0=L)
1:按负/反向逻辑发送/接收数据寄存器中的逻辑数据。(1=L,0=H)。奇偶校验位也取反。
只有在禁止 USART (UE=0) 后才能写入此位字段。
17TXINVTX引脚有效电平反向0:TX 引脚信号使用标准逻辑电平(VDD = 1/空闲,Gnd = 0/标记)工作
1:对 TX 引脚信号值取反。(VDD = 0/标记,Gnd=1/空闲)。允许在 TX 线路上使用外部反相器。
只有在禁止 USART (UE=0) 后才能写入此位字段
16RXINVRX引脚有效电平反向0:RX 引脚信号使用标准逻辑电平(VDD = 1/空闲,Gnd = 0/标记)工作
1:对 RX 引脚信号值取反。(VDD = 0/标记,Gnd=1/空闲)。
允许在 RX 线路上使用外部反相器。
只有在禁止 USART (UE=0) 后才能写入此位字段。
15SWAP交换RX/TX引脚0:按标准引脚排列定义使用 TX/RX 引脚
1:交换 TX 和 RX 引脚功能。允许在与另一个 USART 的交叉连接时工作。
只有在禁止 USART (UE=0) 后才能写入此位字段。
14LINENLIN模式使能0:禁止 LIN 模式
1:使能 LIN 模式
LIN 模式可以使用 USARTx_RQR 寄存器中的 SBKRQ 位发送 LIN 同步断路(13 个低位),并可检测 LIN 同步断路。
只有在禁止 USART (UE=0) 后才能写入此位字段
如果 USART 不支持 LIN 模式,该位保留并由硬件强制清零
13~12STOP[1:0]停止位这2位用于编程停止位
00:1 个停止位
01:0.5 个停止位
10:2 个停止位
11:1.5 个停止位
只有在禁止 USART (UE=0) 后才能写入此位字段
11CLKEN时钟使能该位允许用户使能 SCLK 引脚。
0:禁止 SCLK 引脚
1:使能 SCLK 引脚
只有在禁止 USART (UE=0) 时才能写入此位
为了向智能卡正确提供 SCLK 时钟,必须按以下步骤操作:
- UE = 0
- SCEN = 1
- GTPR 配置(如果需要配置 PSC,建议通过单次访问 USARTx_ GTPR 寄存器来同时配置
PSC 和 GT)
- CLKEN= 1
- UE = 1
10CPOL时钟极性该位允许用户在同步模式下选择 SCLK 引脚上时钟输出的极性。它与 CPHA 位结合使用可获得所需的时钟/数据关系
0:空闲时 SCLK 引脚为低电平
1:空闲时 SCLK 引脚为高电平
只有在禁止 USART (UE=0) 时才能写入此位。
如果不支持同步模式,该位保留并由硬件强制清零
9CPHA时钟相位此位用于在同步模式下选择 SCLK 引脚上时钟输出的相位
0:从第一个时钟边沿开始采样数据
1:从第二个时钟边沿开始采样数据
只有在禁止 USART (UE=0) 时才能写入此位。
如果不支持同步模式,该位保留并由硬件强制清零。
8LBCL最后一个位时钟脉冲此位用于在同步模式下选择与发送的最后一个数据位 (MSB) 关联的时钟脉冲是否必须在 SCLK 引脚上输出。
0:最后一个数据位的时钟脉冲不在 SCLK 引脚上输出
1:最后一个数据位的时钟脉冲在 SCLK 引脚上输出
如果不支持同步模式,该位保留并由硬件强制清零。
7保留必须保持复位值
6LBDIELIN 断路检测中断使能断路中断屏蔽(使用断路分隔符进行断路检测)
0:禁止中断
1:当 USARTx_ISR 寄存器中 LBDF = 1 时,生成中断
如果 LIN 不支持智能卡模式,该位保留并由硬件强制清零。
5LBDLLIN断路检测长度该位用于选择 11 位断路检测或 10 位断路检测。
0:10 位断路检测
1:11 位断路检测
只有在禁止 USART (UE=0) 时才能写入此位。
如果 LIN 不支持智能卡模式,该位保留并由硬件强制清零。
4ADDM77/4位地址检测选择位此位用于选择 4 位地址检测或 7 位地址检测。
0:4 位地址检测
1:7 位地址检测(在 8 位数据模式下)
只有在禁止 USART (UE=0) 时才能写入该位
在 7 位和 9 位数据模式下,地址检测分别在 6 位和 8 位地址上完成(ADD[5:0] 和 ADD[7:0])。
3~0保留位必须保复位

CR3

在这里插入图片描述

名称功能详细介绍使用时注意事项
31~20保留位必须保持复位值
19~17SCARCNT[2:0]智能卡自动重试计数此位字段用于指定智能卡模式下发送和接收的重试次数。
在发送模式下,此位字段用于指定生成发送错误(FE 位置 1)前自动重新发送的重试次数。
在接收模式下,此位字段用于指定生成接收错误(RXNE 位和 PE 位置 1)前错误接收尝试的次数。
只有在禁止 USART (UE=0) 时才能编程此位字段。使能 USART (UE=1) 时,此位字段只能写入 0x0,以停止重新发送。
0x0:禁止重新发送——发送模式下不会自动重新发送。
0x1 到 0x7:自动重新发送的尝试次数(发出错误信号前)
如果不支持智能卡模式,该位保留并由硬件强制清零
16保留位必须保持复位值
15DEP驱动器使能极性选择0:DE 信号高电平有效。
1:DE 信号低电平有效。
只有在禁止 USART (UE=0) 时才能写入此位。
如果不支持驱动器使能功能,该位保留并且必须保持清零。
14DME驱动器使能模式此位用于通过 DE 信号激活外部收发器控制。
0:禁止 DE 功能。
1:使能 DE 功能。DE 信号在 RTS 引脚上输出。
只有在禁止 USART (UE=0) 时才能写入此位。
如果不支持驱动器使能功能,该位保留并且必须保持清零
13DDRE接收出错时的DMA禁止0:接收出错时不禁止 DMA。相应的错误标志置 1,但 RXNE 保持为 0 以防止上溢。因此,将不使能 DMA 请求,从而不会传送错误数据(无 DMA 请求),但会传送接收到的下一个正确数据(用于智能卡模式)。
1:接收出错后禁止 DMA。相应的错误标志以及 RXNE 均置 1。屏蔽 DMA 请求,直到错误标志清零。这意味着软件必须首先禁止 DMA 请求 (DMAR = 0) 或者将 RXNE 清零,然后再将错误标志清零。
只有在禁止 USART (UE=0) 时才能写入此位。
接收错误包括:奇偶校验错误、帧错误或噪声错误。
12OVRDIS上溢禁止此位用于禁止接收上溢检测。
0:接收新数据前未读取已接收的数据时,上溢错误标志 ORE 置 1。
1:禁止上溢功能。如果在 RXNE 标志仍置 1 时接收到新数据,则 ORE 标志不会置 1,且新接收的数据会覆盖 USARTx_RDR 寄存器之前的内容。
只有在禁止 USART (UE=0) 时才能写入此位。
此控制位用于检查通信流而不会读取数据。
11ONEBIT一个采样位方法使能该位允许用户选择采样方法。选择一个采样位方法后,将禁止噪声检测标志 (NF)。
0:三个采样位方法
1:一个采样位方法
只有在禁止 USART (UE=0) 时才能写入此位。
10CTSIECTS中断使能0:禁止中断
1:当 USARTx_ISR 寄存器中的 CTSIF=1 时,生成中断
如果不支持硬件流控制功能,该位保留并由硬件强制清零。
9CTSECTS使能0:禁止 CTS 硬件流控制
1:使能 CTS 模式,仅当 nCTS 输入有效(连接到 0)时才发送数据。
如果在发送数据时使nCTS 输入无效,会在停止之前完成发送。如果使 nCTS 无效时数据已写入数据寄存器,则将延迟发送,直到 nCTS 有效。
只有在禁止 USART (UE=0) 时才能写入该位
如果不支持硬件流控制功能,该位保留并由硬件强制清零。
8RTSERTES使能0:禁止 RTS 硬件流控制
1:使能 RTS 输出,仅当接收缓冲区中有空间时才会请求数据。发送完当前字符后应停止发送数据。可以接收数据时使 nRTS 输出有效(拉至 0)。
只有在禁止 USART (UE=0) 时才能写入此位。
如果不支持硬件流控制功能,该位保留并由硬件强制清零。
7DMATDMA使能发送器该位由软件置 1/复位。
1:针对发送使能 DMA 模式
0:针对发送禁止 DMA 模式
6DMARDMA使能接收器该位由软件置 1/复位。
1:针对接收使能 DMA 模式
0:针对接收禁止 DMA 模式
5SCEN智能卡模式使能该位用于使能智能卡模式。
0:禁止智能卡模式
1:使能智能卡模式只有在禁止 USART (UE=0) 后才能写入此位字段。
如果 USART 不支持智能卡模式,该位保留并由硬件强制清零。
4NACK智能卡NACK使能0:出现奇偶校验错误时禁止 NACK 发送
1:出现奇偶校验错误时使能 NACK 发送
只有在禁止 USART (UE=0) 后才能写入此位字段。
如果 USART 不支持智能卡模式,该位保留并由硬件强制清零。
3HDSEL半双工选择选择单线半双工模式
0:未选择半双工模式
1:选择半双工模式
只有在禁止 USART (UE=0) 时才能写入此位。
2IRLPirDA低功耗模式0:正常模式
1:低功耗模式
只有在禁止 USART (UE=0) 时才能写入此位。
如果不支持 IrDA 模式,该位保留并由硬件强制清零
1IRENirDA模式使能此位由软件置 1 和清零。
0:禁止 IrDA
1:使能 IrDA
只有在禁止 USART (UE=0) 时才能写入此位。
0EIE错误中断使能如果发生帧错误、上溢错误或出现噪声标志(USARTx_ISR 寄存器中 FE = 1 或 ORE = 1 或NF = 1),则需要使用错误中断使能位来使能中断生成。
0:禁止中断
1:USARTx_ISR 寄存器中的 FE=1 或 ORE=1 或 NF=1 时生成中断。

波特率寄存器   BRR

 每个串口都有一个自己独立的波特率寄存器 USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的。
只有在禁止 USART (UE=0) 时才能写入此寄存器。在自动波特率检测模式下,该位由硬件自动更新。
在这里插入图片描述

名称功能详细介绍使用时注意事项
31~16保留必须保持复位
15~4BRR[15:4]BRR[15:4] = USARTDIV[15:4]
3~0BRR[3:0]当 OVER8 = 0 时,BRR[3:0] = USARTDIV[3:0]。
当 OVER8 = 1 时:BRR[2:0] = USARTDIV[3:0],右移 1 位。BRR[3] 必须保持清零

保护时间和预分频寄存器   GTPR

在这里插入图片描述

名称功能详细介绍使用时注意事项
31~16保留必须保持复位
15~8GT[7:0]保护时间值此位字段用于编程保护时间值(以波特时钟周期数为单位)。该位用于智能卡模式。经过此保护时间后,发送完成标志置 1。只有在禁止 USART (UE=0) 后才能写入此位字段。如果不支持智能卡模式,该位保留并由硬件强制清零。
7~0PSC[7:0]预分频器值IrDA 低功耗和正常的 IrDA 模式下
PSC[7:0] = IrDA 正常和低功耗波特率用于编程预分频器,进行 USART 源时钟分频以获得低功耗频率:
使用寄存器中给出的值(8 个有效位)对源时钟进行分频:
00000000:保留 - 不编程此值
00000001:源时钟 1 分频
00000010:源时钟 2 分频
在智能卡模式下
PSC[4:0]:预分频器值 (Prescaler value)用于编程预分频器,进行 USART 源时钟分频以提供智能卡时钟。
将寄存器中给出的值(5 个有效位)乘以 2 得出源时钟频率的分频系数:
00000:保留 - 不编程此值
00001:源时钟 2 分频
00010:源时钟 4 分频
00011:源时钟 6 分频
只有在禁止 USART (UE=0) 后才能写入此位字段。
如果使用智能卡模式,则位 [7:5] 必须保持清零。不支持智能卡和 IrDA 模式时,该位字段保留并由硬件强制清零

接收超时寄存器   RTOR

在这里插入图片描述在这里插入图片描述

请求寄存器   RQR

处理接收和发送请求的寄存器
在这里插入图片描述在这里插入图片描述

中断和状态寄存器   ISR

Interrupt and status register,
在这里插入图片描述

名称功能详细介绍使用时注意事项
31~22保留必须保持复位
21TEACK发送使能确认标志 (Transmit enable acknowledge flag)USART 采用发送使能值时,通过硬件将此位置 1/复位。通过写入 TE=0 生成空闲帧请求,然后在 USARTx_CR1 寄存器中写入 TE=1 以遵循 TE=0最短周期时,可使用此位
20~19保留必须保持复位
18SBKF发送断路标志 (Send break flag)此位指示已请求发送断路字符。通过将 1 写入USARTx_RQR 寄存器中的 SBKRQ 位,此位由软件置 1。此位在断路发送的停止位期间由硬件自动复位。
0:不发送断路字符
1:将发送断路字符
17CMF字符匹配标志 (Character match flag)接收到由 ADD[7:0] 定义的字符后由硬件将此位置 1。通过向 USARTx_ICR 寄存器中的CMCF 写入 1,此位由软件清零。如果 USARTx_CR1 寄存器中 CMIE=1,则会生成中断。
0:未检测到字符匹配
1:检测到字符匹配
16BUSY忙标志 (Busy flag)此位由硬件置 1 和复位。当 RX 线路上正在进行通信(成功检测到起始位)时有效。在接收结束(成功或失败)时复位。
0:USART 处于空闲状态(无接收)
1:正在接收
15ABRF自动波特率标志 (Auto baud rate flag)已设置自动波特率(RXNE 也将置 1,并在 RXNEIE = 1 时生成中断),或者自动波特率操作未成功完成时,此位由硬件置 1 (ABRE=1)(此时,ABRE、RXNE 和 FE 也置 1)为请求新的自动波特率检测,通过向 USARTx_RQR 寄存器中的 ABRRQ 写入 1,此位由软件清零。注: 如果 USART 不支持自动波特率功能,则此位保留并由硬件强制清零。
14ABRE自动波特率错误 (Auto baud rate error)如果波特率测量失败(波特率超出范围或字符比较失败),此位由硬件置 1。通过将 1 写入 USARTx_CR3 寄存器中的 ABRRQ 位,此位由软件清零。如果 USART 不支持自动波特率功能,则此位保留并由硬件强制清零。
13保留必须保持复位
12EOBF块结束标志 (End of block flag)接收到完整块后,此位由硬件置 1(例如 T=1 智能卡模式)。接收到的字节数(从块的起始处,包括起始字段)等于或大于 BLEN + 4 时执行检测。如果 USARTx_CR2 寄存器中 EOBIE = 1,则会生成中断。通过向 USARTx_ICR 寄存器中的 EOBCF 写入1,此位由软件清零。
0:未达到块结束
1:已达到块结束(字符数)
注: 如果不支持智能卡模式,该位保留并由硬件强制清零
11RTOF接收器超时 (Receiver timeout)已经过在 RTOR 寄存器中编程的超时值后,如果无任何通信,此位由硬件置 1。通过向USARTx_ICR 寄存器中的 RTOCF 写入 1,此位由软件清零。如果 USARTx_CR2 寄存器中 RTOIE=1,则会生成中断。在智能卡模式下,该超时对应于 CWT 或 BWT 时间。
0:未达到超值值
1:已达到超时值,未接收到任何数据
如果 RTOR 寄存器中编程的时间值将 2 个字符隔开,则 RTOF 不置 1。如果此时间大于该值 + 2 个采样时间(2/16 或 2/8,具体取决于过采样方法),则 RTOF 标志置 1。即使 RE = 0,计数器仍会计数,但 RTOF 仅在 RE = 1 时置 1。如果 RE 置 1 时已经超时,则 RTOF 将置 1。
如果 USART 不支持接收器超时功能,该位保留并由硬件强制清零。
10CTSCTS 标志 (CTS flag)此位由硬件置 1/复位。此位是对 nCTS 输入引脚的状态取反。
0:nCTS 线置 1
1:nCTS 线复位
注: 如果不支持硬件流控制功能,该位保留并由硬件强制清零。
9CTSIFCTS 中断标志 (CTS interrupt flag)如果 CTSE 位置 1,当 nCTS 输入切换时,此位由硬件置 1。通过向 USARTx_ICR 寄存器中的 CTSCF 位写入 1,此位由软件清零。如果 USARTx_CR3 寄存器中 CTSIE=1,则会生成中断。
0:nCTS 状态线上未发生变化
1:nCTS 状态线上发生变化
注: 如果不支持硬件流控制功能,该位保留并由硬件强制清零。
8LBDFLIN 断路检测标志 (LIN break detection flag)检测到 LIN 断路时,该位由硬件置 1。通过向 USARTx_ICR 寄存器中的 LBDCF 写入 1,此位由软件清零。如果 USARTx_CR2 寄存器中 LBDIE = 1,则会生成中断。
0:未检测到 LIN 断路
1:检测到 LIN 断路
注: 如果 USART 不支持 LIN 模式,该位保留并由硬件强制清零。
7TXE发送数据寄存器为空 (Transmit data register empty)当 USARTx_TDR 寄存器的内容已传输到移位寄存器时,该位由硬件置 1。通过对USARTx_TDR 寄存器执行写入操作将该位清零。为丢弃数据(仅在智能卡 T=0 模式下出现发送故障时),也可以通过向 USARTx_RQR 寄存器中的 TXFRQ 写入 1 来将 TXE 标志清零。如果 USARTx_CR1 寄存器中 TXEIE 位 = 1,则会生成中断。
0:数据未传输到移位寄存器
1:数据传输到移位寄存器
注: 单缓冲区发送期间使用该位
6TC发送完成 (Transmission complete)如果已完成对包含数据的帧的发送并且 TXE 置 1,则该位由硬件置 1。如果 USARTx_CR1寄存器中 TCIE=1,则会生成中断。通过向 USARTx_ICR 寄存器中的 TCCF 写入 1 或向USARTx_TDR 寄存器执行写操作,此位由软件清零。如果 USARTx_CR1 寄存器中 TCIE=1,则会生成中断。
0:传送未完成
1:传送已完成
注: 如果 TE 位复位且无任何发送正在进行,TC 位会立即置 1
5RXNE读取数据寄存器不为空 (Read data register not empty)当 RDR 移位寄存器的内容已传输到 USARTx_RDR 寄存器时,该位由硬件置 1。通过对USARTx_RDR 寄存器执行读入操作将该位清零。也可以通过将 USARTx_RQR 寄存器中的RXFRQ 位置 1 将 RXNE 标志位清零。如果 USARTx_CR1 寄存器中 RXNEIE=1,则会生成中断。
0:未接收到数据
1:已准备好读取接收到的数据
4IDLE检测到空闲线路 (IDLE line detected)检测到空闲线路时,该位由硬件置 1。如果 USARTx_CR1 寄存器中 IDLEIE=1,则会生成中断。通过向 USARTx_ICR 寄存器中的 IDLECF 写入 1,此位由软件清零。
0:未检测到空闲线路
1:检测到空闲线路
注: 直到 RXNE 位已置 1 时(即,当出现新的空闲线路时)IDLE 位才会被再次置 1。使能静默模式 (MME=1) 后,如果 USART 未静默 (RWU=0),则 IDLE 置 1,无论是否通过 WAKE 位选择了静默模式。如果 RWU=1,IDLE 不置 1。
3ORE溢出错误 (Overrun error)在 RXNE = 1 的情况下,当移位寄存器中当前正在接收的数据准备好传输到 RDR 寄存器时,该位由硬件置 1。通过向 USARTx_ICR 寄存器中的 ORECF 写入 1,此位由软件清零。如果 USARTx_CR1 寄存器中 RXNEIE=1 或 EIE = 1,则会生成中断。
0:无溢出错误
1:检测到溢出错误
注: 当此位置 1 时,
2NFSTART 位噪声检测标志 (START bit Noise detection flag)当在接收的帧上检测到噪声时,该位由硬件置 1。通过向 USARTx_ICR 寄存器中的 NFCF写入 1,此位由软件清零。
0:未检测到噪声
1:检测到噪声
注: 该位不会生成中断,因为该位出现的时间与本身生成中断的 RXNE 位出现的时间相同。EIE 位置 1 后,如果在多缓冲区通信中 NF 标志置 1,则会生成中断。
当线路无噪声时,可以通过将 ONEBIT 位编程为 1 提高 USART 对偏差的容差来禁止NF 标志
1FE帧错误 (Framing error)当检测到去同步化、过度的噪声或中断字符时,该位由硬件置 1。通过向 USARTx_ICR 寄存器中的 FECF 写入 1,此位由软件清零。在智能卡模式下发送期间,如果在达到最大发送尝试次数后仍未成功(智能卡向数据帧发送NACK 信号),则此位置 1。如果 USARTx_CR1 寄存器中 EIE = 1,则会生成中断。
0:未检测到帧错误
1:检测到帧错误或中断字符
0PE奇偶校验错误 (Parity error)当在接收器模式下发生奇偶校验错误时,该位由硬件置 1。通过向 USARTx_ICR 寄存器中的 PECF 写入 1,此位由软件清零。如果 USARTx_CR1 寄存器中 PEIE = 1,则会生成中断。
0:无奇偶校验错误
1:奇偶校验错误

中断标志清零寄存器    ICR

在这里插入图片描述

名称功能详细介绍使用时注意事项
31~18保留必须保持复位
17CMCF字符匹配清零标志 (Character match clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 CMF 标志将清零。
16~13保留必须保持复位
12EOBCF块结束清零标志 (End of block clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 EOBF 标志将清零。注: 如果 USART 不支持智能卡模式,该位保留并由硬件强制清零。
11RTOCF接收器超时清零标志 (Receiver timeout clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 RTOF 标志将清零。注: 如果 USART 不支持接收器超时功能,该位保留并由硬件强制清零。
10保留必须保持复位值。
9CTSCFCTS 清零标志 (CTS clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 CTSIF 标志将清零。注: 如果不支持硬件流控制功能,该位保留并由硬件强制清零。
8LBDCFLIN 中断检测清零标志 (LIN break detection clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 LBDF 标志将清零。注: 如果 LIN 不支持智能卡模式,该位保留并由硬件强制清零
7保留必须保持复位值。
6TCCF发送完成清零标志 (Transmission complete clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 TC 标志将清零。
5保留必须保持复位值。
4IDLECF检测到空闲线路清零标志 (Idle line detected clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 IDLE 标志将清零。
3ORECF上溢错误清零标志 (Overrun error clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 ORE 标志将清零。
2NCF检测到噪声清零标志 (Noise detected clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 NF 标志将清零。
1FECF帧错误清零标志 (Framing error clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 FE 标志将清零。
0PECF奇偶校验错误清零标志 (Parity error clear flag)将 1 写入此位时,USARTx_ISR 寄存器中 PE 标志将清零。

接收数据寄存器   RDR

在这里插入图片描述

名称功能详细介绍使用时注意事项
31~9保留必须保持复位
8:0RDR[8:0]接收数据值 (Receive data value)包含接收到的数据字符。RDR 寄存器在输入移位寄存器和内部总线之间提供了并行接口。在使能奇偶校验位的情况下进行接收时,从 MSB 位中读取的值为接收到的奇偶校验位。

发送数据寄存器    TDR

在这里插入图片描述

相关中断

USART TXE和TC的用法

USART TXE和TC的用法 点击跳转

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F7--->串口相关,串口的所有寄存器详讲 的相关文章

  • vector的内存释放

    xff11 vector内存分配机制 C 43 43 中vector的一个特点是 xff1a 内存空间只会增长 xff0c 不会减小 即为了支持快速的随机访问 xff0c vector容器的元素以连续方式存放 xff0c 每一个元素都挨着前
  • MFC多人在线聊天室

    我已经在我的资源里上传了这个聊天室的代码了 基于MFC的C 43 43 的select模型的TCP聊天室 采用select网络模型 xff0c 支持多人同时登陆 xff0c 功能有上线 下线 群聊 私聊 使用CjsonObject进行数据传
  • linux---进程间通信(ipc)之共享内存

    前面我们讲解了进程间通信之管道 xff0c 这段我们讲解我们的共享内存 共享内存是所有进程间通信方式最快的一种 内存共享模型就像下面的图一样 xff0c 就是将物理内存映射到我们进程的虚拟地址上 xff0c 我们就可以直接操作我们虚拟地址空
  • Effective C++总结

    explicit关键字 C 43 43 中的explicit关键字只能用于修饰只有一个参数或者是其他参数有默认值的类构造函数 它的作用是表明该构造函数是显式的 而非隐式的 跟它相对应的另一个关键字是implicit 意思是隐藏的 类构造函数
  • 计算机网络(5)TCP之重传机制

    重传机制 超时重传数据包丢失确认应答丢失 快速重传SACKD SACK例一 ACK 丢包例2 xff1a 网络延时 TCP 是通过序列号 确认应答 重发控制 连接管理以及窗口控制等机制实现可靠性传输的 TCP 实现可靠传输的方式之一 xff
  • 中断与回调

    1 xff0c 回调函数 回调函数的原理是使用函数指针实现类似 软中断 的概念 比如在上层的两个函数A和B xff0c 把自己的函数指针传给了C xff0c C通过调用A和B的函数指针达到 当做了什么 xff0c 通知上层来调用A或者B 的
  • CUDA 程序的优化(3) 任务划分

    4 3 1任务划分原则 首先 xff0c 需要将要处理的任务划分为几个连续的步骤 xff0c 并将其划分为CPU端程序和GPU端程序 划分时需要考虑的原则有 列出每个步骤的所有可以选择的算法 xff0c 并比较不同算法在效率和计算复杂度上的
  • C++ Matlab混合编程时“函数或变量 ‘matlabrc‘ 无法识别”

    在QT中调用Matlab初始化时 xff0c 出现了 函数或变量 matlabrc 无法识别 的情况 xff0c 接着崩溃 而且比较神奇的是 xff0c 前一次是可以初始化的 xff0c 但运行过程中发生了崩溃 直接搜解决办法 xff0c
  • Notepad++全选一整列的靠谱办法

    遇到行数较少的可以直接按住ALT手动选取 xff0c 但遇到行数较多 xff0c 就得这么干 xff1a 鼠标放在第一行某一列 xff0c 按住Alt 43 Shift xff0c 然后鼠标选择最后一行该列 xff0c 输入内容即可 xff
  • 对象转xml格式工具类

    import com ruiyun gui store haikang haikang bean FCSearchDescription import com ruiyun gui store haikang haikang bean FD
  • 【无标题】MQ静态图片获取

    public void getImageV40 String path Integer buildingProjectId HttpServletResponse response JSONObject param 61 new JSONO
  • 数据加解密时Base64异常:Illegal base64 character 3a

    现象 用base64工具类对中文进行处理时出现异常 xff0c 在数据加解密场景中经常使用 java lang IllegalArgumentException Illegal base64 character 3a at java uti
  • Winsock编程实例---TCP&UDP

    0x1 基于TCP的通信 1 服务端 1 1 创建基本流程 创建一个TCP服务端的程序需要调用的函数流程 xff1a 初始化函数库 gt gt WSAStartup 创建套接字 gt gt socket 绑定套接字 gt gt bind 监
  • 数据结构---选择排序(直接选择排序和堆排序图解)

    选择排序思想 xff1a 每一次从待排序的数据元素中选出最小 xff08 或最大 xff09 的一个元素 xff0c 存放在序列的起始位置 xff0c 直到全部待排序的 数据元素排完 直接选择排序 在元素集合array i array n
  • Java HttpUtils类

    Java HttpUtils类 Java HttpUtils类 定义 Public class HttpUtils 收集HTTP Servlet使用的静态的有效方法 方法 1 getRequestURL public static Stri
  • Ubuntu打造家用NAS三——网盘与影视中心

    Ubuntu打造家用NAS三 网盘与影视中心 一 Ubuntu 挂载硬盘 通过 Putty 连接 NAS查看硬盘位置 xff1a sudo fdisk l找到需要挂载的硬盘 xff0c 我的是 Disk dev sdb xff1a xxx

随机推荐

  • Ardupilot笔记:Rover auto模式下的执行流程

    先从mode auto cpp的update 开始分析 流程如图 xff1a 进入函数update 后会执行函数navigate to waypoint mode auto cpp span class token keyword void
  • 串口通信协议 UART+I2C+SPI

    UART 异步 串行 全双工 I2C SPI 不同通信协议比较 UART UART协议详解 UART通信 xff0c 接收与发送 xff08 详细版 xff0c 附代码 xff09 UART串行通信详解 待整理 UART是Universal
  • c语言---宏

    宏 1 仅仅替换 2 不能定义宏参类型 3 不会检查宏参有没有定义 定义带参数的宏 define JH a b t t 61 a a 61 b b 61 t xff0c 对两个参数a b的值进行交换 xff0c 下列表述中正确的是 xff0
  • Ros安装rosdep update出错,解决办法(从根本入手)

    博主作为一个ros刚入门的新手 xff0c 之前也安装过ros ros2但是在Ros安装在进行rosdep update 时运气与网络是成功的关键 xff0c 在尝试了好多次 xff0c 运气好一次就成功了 xff0c 运气不好得不停的试错
  • vscode使用方法

    01 ctrl 43 u 返回上一个光标焦点 02 发送请求插件 到VSCode插件中搜索REST Client 搜索到 xff0c 点击install进行安装 创建一个 http文件 编写测试接口文件 右键选择 发送请求 xff0c 测试
  • 自主飞行无人机开发--SALM cartographer开源框架 rplidar A2/3

    参考学习网站 xff1a https google cartographer ros readthedocs io en latest 问题提出 xff1a 四旋翼搭载激光雷达A3进行SLAM室内定位 xff0c 其怎样Running Ca
  • C#串口通信中的奇偶性校验、CRC校验函数

    一般来说 xff0c 通信协议中的通用数据格式是 包头 43 指令码 43 数据长度 43 有效数据 43 校验码 43 包尾 其中 xff0c 校验方式有多种 xff0c 最流行的是CRC校验方式 xff0c 其次是简单的奇偶性校验 校验
  • 测试软件安装步骤

    目录 Ja 目录 Java安装 jdk下载 jdk环境配置 phpstudy安装 禅道的安装 xampp安装 postman安装 requests parameterized jmeter安装 JVM监控 Locust SecureCRT软
  • linux---进程信号

    进程的功能以及概念信号的生命周期以及相关的接口自定义信号的捕捉流程信号集以及阻塞信号集了解一个SIGCHLD信号 信号的功能以及概念 信号的功能 xff1a 信号就是通知我们某一个事件的发生 信号的概念 xff1a 信号就是一个软件中断 x
  • 双目立体视觉:四(双目标定matlab,图像校正,图像匹配,计算视差,disparity详解,)

    二郎也比较忙 xff0c 在某大场工作 xff0c 有时候没有时间回复 如果希望二郎尽快帮忙 xff0c 可以将代码 xff0c 数据和问题发给二郎 xff0c 谢谢大家理解 glwang20 64 mails jlu edu cn 不过还
  • conda解决 An HTTP error occurred when trying to retrieve this URL.问题

    遇到 xff1a Collecting package metadata current repodata json failed CondaHTTPError HTTP 000 CONNECTION FAILED for url lt h
  • ubuntu20.04 安装 WPS 2019

    ubuntu自带的文字处理软件对来自windows下office或在WPS创建的ppt有点不兼容 xff0c 看到WPS有linux版本的 xff0c 便果断安装试一试 一 卸载原生liboffice sudo apt get remove
  • 制作ubuntu系统的 usb启动盘

    前言 由于课程的要求 xff0c 要尝试完成 编译安装Linux系统的内核 xff0c 但是在编译内核的过程中 xff0c Ubuntu的grub引导好像出了一些问题 xff0c 不能进入系统了 所以就要制作一个usb启动盘 xff0c 看
  • 项目用到的开源库>http-parser(一个HTTP消息解析器)

    http parser 定义 xff1a 一个用C编写的HTTP消息解析器 xff0c 可以解析请求和响应 优点 xff1a 不会进行任何系统调用及内存分配 xff0c 它不会缓冲数据 xff0c 它可以被随时中断 根据你的体系结构 xff
  • 项目优化>C++,concurrentqueue(高性能并发队列)

    项目中的数据队列基于轮询和selep的实时性及CUP性能差 xff0c 需要进行优化 xff0c 尝试使用concurrentqueue进行优化 网上有一些资料介绍 可供参考 使用后的个人理解 一个线程安全的queue xff0c 并且co
  • shell>sed (对文件的内容进行替换)

    在生产环境中经常会遇到对配置文件的修改 xff0c 那写成一个脚本 xff0c 传个参数修改配置文件不就方便多了吗 对一个文件的操作那我暂且分为增删改查了 写在前面 i 这个参数很重要 xff0c 若需要更改源文件 xff0c 请配合 i参
  • Linux>软链接的作用与使用

    软链接 xff1a 为某一个文件在另外一个位置建立一个同不的链接 类似于Windows下的快捷方式 好处 xff1a 仅仅是个链接 xff0c 不占用空间 xff0c 使用还是照常使用 实际生产环境中 xff0c 使用第三方的工具 xff0
  • WPF--->自定义控件中添加按钮,TextBox添加Button为例

    span class token tag span class token tag span class token punctuation lt span Style span span class token attr name spa
  • STM32F767--->串口通信接收不定长数据的处理方法

    文章目录 写在前面超时中断相关寄存器接收器超时寄存器 USARTx RTOR 空闲中断整体思路 附录程序代码参考 写在前面 使用STM32F767有两种中断方式 超时中断和空闲中断 接不定长的数据 xff0c 其中超时中断要比空闲中断好用
  • STM32F7--->串口相关,串口的所有寄存器详讲

    文章目录 串口相关寄存器串口控制寄存器CR1CR2CR3 波特率寄存器 BRR保护时间和预分频寄存器 GTPR接收超时寄存器 RTOR请求寄存器 RQR中断和状态寄存器 ISR中断标志清零寄存器 ICR接收数据寄存器 RDR发送数据寄存器