DIV_Mantissa= 468=0X1D4;
这样,我们就得到了USART1->BRR的值为0X1D4C。只要设置串口1的BRR寄存器值为0X1D4C就可以得到9600的波特率。
4,串口控制。STM32的每个串口都有3个控制寄存器USART_CR1~3,串口的很多配置都是通过这3个寄存器来设置的。这里我们只要用到USART_CR1就可以实现我们的功能了。
BIT 13: 串口功能;
BIT 12: MODE,字长。0: 1个开始位,8个数据位,1位停止位(默认);1:
1个开始位,9位数据位,1位停止位(默认);
*注意:停止位的长度可在USART_CR2寄存器中设置。
BIT 11: WAKE 唤醒功能
BIT 10: 校检使能位,当激活奇偶校验功能时,置位该位将自动往要传输数据的高位字节处插入就校验位。
BIT 09: Parity Selection,0:偶校验;1:奇校验。
BIT 08: PE Interrupt Enable
BIT 07: 发送缓冲区空中断使能位
BIT 06: 发送完成中断使能位
BIT 05: 接收缓冲区非空中断使能位
BIT 04: Idle Interrupt Enable
BIT 03: Transfer Enable
BIT 02: Receive Enable
BIT 01: Receiver Wakeup
BIT 00: Send Break
5,数据发送与接收。STM32的发送与接收是通过数据寄存器USART_DR来实现的,这是一个双寄存器,包含了TDR和RDR。当向该寄存器写数据的时候,串口就会自动发送,当收到收据的时候,也是存在该寄存器内。该寄存器的各位描述如下:
图3.3.1.3寄存器USART_DR各位描述
可以看出,虽然是一个32位寄存器,但是只用了低9位(DR[8:0]),其他都是保留。
DR[8:0]为串口数据,包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),一个给接收用(RDR),该寄存器兼具读和写的功能。TDR寄存器提供了内部总线和输出移位寄存器之间的并行接口。RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。
当使能校验位(USART_CR1种PCE位被置位)进行发送时,写到MSB的值(根据数据的长度不同,MSB是第7位或者第8位)会被后来的校验位该取代。
当使能校验位进行接收时,读到的MSB位是接收到的校验位。
6,串口状态。串口的状态可以通过状态寄存器USART_SR读取。USART_SR的各位描述如下: