USART 通用同步异步收发器(Universal Synchronous Asynchronous Receiver Transmitter)。
APB2ENR 高级外设总线(Andvaced Peripheral Bus)使能(Enable)寄存器;外设的对应位使能(置1)后,该外设才可以使用。
APB2RSTR 高级外设总线(Andvaced Peripheral Bus)复位(Reset)寄存器;当外设出现异常的时候可以通过复位寄存器里面的对应位设置,实现该外设的复位,然后重新配置这个外设达到让其重新工作的目的。一般在系统刚开始配置外设的时候,都会先执行复位该外设的操作。
USART_SR 串口状态(State)寄存器;
CTS:如果设置了CTSE位,当nCTS输入变化状态时,该位被硬件置高。由软件将其清零。如果USART_CR3中的CTSIE为’1’,则产生中断。
LBD:LIN断开检测(LIN Break Detect)当探测到LIN断开时,该位由硬件置’1’,由软件清’0’(向该位写0)。如果USART_CR3中的LBDIE = 1,则产生中断。
TXE:发送数据寄存器空(Transmit Empty)当TDR寄存器中的数据被硬件转移到移位寄存器的时候,该位被硬件置位。如果USART_CR1寄存器中的TXEIE为1,则产生中断。对USART_DR的写操作,将该位清零。
TC:发送完成(Transmit Complete),当该位被置位的时候,表示USART_DR内的数据已经被发送完成了。如果设置了这个位的中断,则会产生中断。该位也有两种清零方式:1)读USART_SR,写USART_DR。2)直接向该位写0。
RXNE:接收据寄存器非空(Receive Not Empty),当该位被置位的时候,就是提示已经有数据被接收到了,并且可以读出来了。通过读USART_DR可以将该位清零,也可以向该位写0,直接清除。
IDLE:监测到总线空闲;当检测到总线空闲时,该位被硬件置位。如果USART_CR1中的IDLEIE为’1’,则产生中断。
ORE:过载错误(Overrun Error)当RXNE仍然是’1’的时候,当前被接收在移位寄存器中的数据,需要传送至RDR寄存器时,硬件将该位置位。如果USART_CR1中的RXNEIE为’1’的话,则产生中断。
NE: 噪声错误(Noise Error)在接收到的帧检测到噪音时,由硬件对该位置位。
FE: 帧错误(Framing Error)当检测到同步错位,过多的噪声或者检测到断开符,该位被硬件置位。
PE: 校验错误(Parity Error)在接收模式下,如果出现奇偶校验错误,硬件对该位置位。
USART_DR 串口数据(Data)寄存器;这是一个双寄存器,包含了TDR和RDR,对它读操作,读取的是RDR寄存器的值,对它的写操作,实际上是写到TDR寄存器的;当向该寄存器写数据的时候,串口就会自动发送,当收到收据的时候,也是存在该寄存器内。
只用了低9位(DR[8:0]),其他都是保留。该寄存器兼具读和写的功能。MSB 位(根据数据的长度不同,MSB是第7位或者第8位)是校验位。
USART_BRR 串口波特率(BaudRate)寄存器,设置它就可以达到配置不同波特率的目的。
DIV_Mantissa[11:0]:USARTDIV的整数部分;这12位定义了USART分频器除法因子(USARTDIV)的整数部分。
DIV_Fraction[3:0]:USARTDIV的小数部分这4位定义了USART分频器除法因子(USARTDIV)的小数部分。;
USART_CR1 串口控制(Control)寄存器1;串口的很多配置都是通过这3个寄存器来设置的。
该寄存器的高 18 位没有用到,低 14 位用于串口的功能设置。
UE:串口使能(Usart Enable)位,通过该位置1,以使能串口。当该位被清零,分频器和输出停止工作,以减少功耗。
M:字长选择位,当该位为0的时候设置串口为8个字长外加停止位,停止位的个数是根据USART_CR2的[13:12]位设置来决定的,默认为0。
WAKE:唤醒;置0,被空闲总线唤醒;置1,被地址标记唤醒。
PCE:校验控制使能(Parity Control Enable)位,置0,则禁止校验,否则使能校验。
PS:校验位选择(Parity Select)位,设置为0则为偶校验,否则为奇校验。
PEIE:PE中断使能(Parity Error Interrupt Enable),置0,禁止中断;置1,当USART_SR中的PE为’1’时,产生USART中断。
TXIE:发送缓冲区空中断使能(Transmit Interrupt Enable)位,设置该位为 1,当 USART_SR 中的 TXE 位为1 时,将产生串口中断。
TCIE:发送完成中断使能(Transmit Complete Interrupt Enable)位,设置该位为 1,当 USART_SR 中的 TC位为 1 时,将产生串口中断。
RXNEIE:接收缓冲区非空中断使能(Receive Non-Empty Interrupt Enable)位,设置该位为 1,当 USART_SR中的 ORE 或者 RXNE 位为 1 时,将产生串口中断。
IDLEIE:IDLE中断使能(IDLE Interrupt Enable)位,置0,禁止中断;置1,当USART_SR中的IDLE为’1’时,产生USART中断。
TE:发送使能(Transmit Enable)位,设置为1,将开启串口的发送功能。
RE:接收使能(Receive Enable)位,用法同 TE。
RWU:接收唤醒(Receiver Wakeup)位;置0,正常模式;置1,静默模式。
SBK:发送断开帧(Send Break)位;使用该位来发送断开字符。该位可以由软件设置或清除。操作过程应该是软件设置位它,然后在断开帧的停止位时,由硬件将该位复位。
USART_CR2 串口控制(Control)寄存器2:
LINEN:LIN模式使能(LIN Enable)位;在LIN模式下,可以用USART_CR1寄存器中的SBK位发送LIN同步断开符(低13位),以及检测LIN同步断开符。
STOP:停止位(STOP)位;这2位用来设置停止位的位数;00:1个停止位;01:0.5个停止位;10:2个停止位;11:1.5个停止位;
CLKEN:时钟使能(Clock Enable)位;该位用来使能CK引脚。
CPOL:时钟极性(Clock Polarity)位;在同步模式下,可以用该位选择SLCK引脚上时钟输出的极性。
CPHA:时钟相位(Clock Phase)位;在同步模式下,可以用该位选择SLCK引脚上时钟输出的相位。
LBCL:最后一位时钟脉冲(Last Bit Clock Pulse)位;在同步模式下,使用该位来控制是否在CK引脚上输出最后发送的那个数据字节(MSB)对应的时钟脉冲。
LBDIE:LIN断开符检测中断使能(LIN Break Detection Interrupt Enable)位;置0,禁止中断;置1,只要USART_SR寄存器中的LBD为’1’就产生中断。
LBDL:LIN断开符检测长度(LIN Break Detection Length)位;该位用来选择是11位还是10位的断开符检测。
ADD[3:0]:本设备的USART节点地址。这是在多处理器通信下的静默模式中使用的,使用地址标记来唤醒某个USART设备。
USART_CR3 串口控制(Control)寄存器3:
CTSIE:CTS中断使能(CTS Interrupt Enable)位;
CTSE:CTS使能(CTS Enable)位;
RTSE:RTS使能(RTS Enable)位;
DMAT:DMA发送(DMA Transmitter)位;
DMAR: DMA接收(DMA Receiver)位;
SCEN: 智能卡使能(Smartcard Enable)位;该位用来使能智能卡模式
NACK:智能卡NACK(Smartcard NACK)位;置0,不发送NACK;置1,发送NACK;
HDSEL:半双工选择(Half-duplex Selection)位;选择单线半双工模式;
IRLP:红外低功耗(IrDA Low-Power)位;该位用来选择普通模式还是低功耗红外模式;
IREN:红外模式使能(IrDA Enable)位;
EIE:错误中断使能(Error Interrupt Enable)位;
USART_GTPR 保护时间(Guard Time)和预分频(Prescaler)寄存器:
GT[7:0]:保护时间值(Guard Time)位;该位域规定了以波特时钟为单位的保护时间。在智能卡模式下,需要这个功能。当保护时间过去后,才会设置发送完成标志。
PSC[7:0]:预分频器值(Prescaler)位;在红外或智能卡模式,才需要这个功能。