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

文章目录

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

串口相关寄存器

STM32F7--->串口相关,串口的所有寄存器详讲_第1张图片

串口控制寄存器

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

CR1

STM32F7--->串口相关,串口的所有寄存器详讲_第2张图片

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

CR2

STM32F7--->串口相关,串口的所有寄存器详讲_第3张图片

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

CR3

STM32F7--->串口相关,串口的所有寄存器详讲_第4张图片

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

波特率寄存器   BRR

 每个串口都有一个自己独立的波特率寄存器 USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的。
只有在禁止 USART (UE=0) 时才能写入此寄存器。在自动波特率检测模式下,该位由硬件自动更新。
STM32F7--->串口相关,串口的所有寄存器详讲_第5张图片

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

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

STM32F7--->串口相关,串口的所有寄存器详讲_第6张图片

名称 功能 详细介绍 使用时注意事项
31~16 保留 必须保持复位
15~8 GT[7:0] 保护时间值 此位字段用于编程保护时间值(以波特时钟周期数为单位)。该位用于智能卡模式。经过此保护时间后,发送完成标志置 1。只有在禁止 USART (UE=0) 后才能写入此位字段。 如果不支持智能卡模式,该位保留并由硬件强制清零。
7~0 PSC[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

STM32F7--->串口相关,串口的所有寄存器详讲_第7张图片STM32F7--->串口相关,串口的所有寄存器详讲_第8张图片

请求寄存器   RQR

处理接收和发送请求的寄存器
STM32F7--->串口相关,串口的所有寄存器详讲_第9张图片STM32F7--->串口相关,串口的所有寄存器详讲_第10张图片

中断和状态寄存器   ISR

Interrupt and status register,
STM32F7--->串口相关,串口的所有寄存器详讲_第11张图片

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

中断标志清零寄存器    ICR

STM32F7--->串口相关,串口的所有寄存器详讲_第12张图片

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

接收数据寄存器   RDR

STM32F7--->串口相关,串口的所有寄存器详讲_第13张图片

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

发送数据寄存器    TDR

STM32F7--->串口相关,串口的所有寄存器详讲_第14张图片

相关中断

USART TXE和TC的用法

USART TXE和TC的用法 点击跳转

你可能感兴趣的:(#,嵌入式经验,STM32F7,串口,寄存器)