文章目录
串口相关寄存器
串口控制寄存器
STM32F767 的每个串口都有 3 个控制寄存器 USART_CR1~3,串口的很多
配置都是通过这 3 个寄存器来设置的。
CR1
位 | 名称 | 功能 | 详细介绍 | 使用时注意事项 |
---|---|---|---|---|
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
位 | 名称 | 功能 | 详细介绍 | 使用时注意事项 |
---|---|---|---|---|
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
位 | 名称 | 功能 | 详细介绍 | 使用时注意事项 |
---|---|---|---|---|
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) 时才能写入此寄存器。在自动波特率检测模式下,该位由硬件自动更新。
位 | 名称 | 功能 | 详细介绍 | 使用时注意事项 |
---|---|---|---|---|
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
位 | 名称 | 功能 | 详细介绍 | 使用时注意事项 |
---|---|---|---|---|
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
请求寄存器 RQR
处理接收和发送请求的寄存器
中断和状态寄存器 ISR
Interrupt and status register,
位 | 名称 | 功能 | 详细介绍 | 使用时注意事项 |
---|---|---|---|---|
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
位 | 名称 | 功能 | 详细介绍 | 使用时注意事项 |
---|---|---|---|---|
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
位 | 名称 | 功能 | 详细介绍 | 使用时注意事项 |
---|---|---|---|---|
31~9 | 保留 | 必须保持复位 | ||
8:0 | RDR[8:0] | 接收数据值 (Receive data value) | 包含接收到的数据字符。RDR 寄存器在输入移位寄存器和内部总线之间提供了并行接口。在使能奇偶校验位的情况下进行接收时,从 MSB 位中读取的值为接收到的奇偶校验位。 |