微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32F10xxx架构:通用同步异步收发器USART--USART通用

STM32F10xxx架构:通用同步异步收发器USART--USART通用

时间:11-10 来源:互联网 点击:

则12位的值设置在USART_BRR寄存器。备注在写入USART_BRR之后,波特率计数器会被波特率寄存器的值所替换。因此,不要再通信进行中改变波特率寄存器的数值。

从USART_BRR寄存器得到USARTdiv

例1:若div_Mantissa = 27,div_Fraction=12(USART_BRR = 0x1BC),则:

Mantissa(USARTdiv) = 27

Fraction(USARTdiv) = 12/16 = 0.75

所以此时USARTdiv = 27.75

例2:要求USARTdiv = 25.62,则:

div_Fraction = 16*0.62 = 9.92,最接近的整数是10 = 0x0A

div_Mantissa = mantissa(25.620) = 25 = 0x19

于是USART_BRR = 0x19A

例3:要求USARTdiv = 50.99,则:

div_Fraction = 16*0.99 = 15.84,最接近的整数是16 = 0x10 => div_frac[3:0]溢出 => 进位必须加到小数部分。

div_Mantissa = mantissa(50.990+进位) = 51 = 0x33

于是USART_BRR = 0x330,USARTdiv = 51

4、控制寄存器1(USART_CR1)

1】地址偏移:0x0C,复位值:0x0000

2】位31-14:保留位,硬件强制为0

位13:UE(USART使能):当该位被清零,在当前字节传输完成后的USART的分频器和输出停止工作,以减少功耗。该位由软件设置和清零。置0时,USART分频器和输出被禁止,置1时,USART模块使能。

位12:M(字长):该位定义了数据字的长度,由软件对其设置和清零。置为0时表示一个起始位,8个数据位,n个停止位。置位1时,表示一个起始位,9个数据位,n个停止位。注意在数据传输过程中(发送和接收时)不能修改这个位。

位11:WAKE(唤醒的方法):该位决定了把USART唤醒的方法,由软件对该位设置和清零。为0时,表示被空闲总线唤醒,为1时表示被地址标记唤醒。

位10:PCE(检验控制使能):用该位选择是否进行硬件校验控制(对于发送来说就是校验位的产生,对于接受来说,就是校验位的检测)。当使能了该位,在发送数据的最高位(如果M=1,最高位是第9位,如果M是0,最高位是第8位)插入校验位。对接受到的数据检查其检验位。软件对它置“1”或者清“0”,一旦设置了该位,当前直接传输完成后,校验控制才生效。置0时表示禁止校验控制,置为1时表示使能校验控制。

位9:PS(校验选择):当校验控制使能后,该位用来选择采用偶校验还是奇校验。软件对它置1或清0.当前字节传输完成后,该选择生效。置为0时表示为偶校验,置为1时表示为奇校验。

位8:PEIE(PE中断使能):该位由软件设置或清除。置为0时禁止产生中断,置为1时,当USART_SR中的PE为“1”时,产生USART中断。

位7:TXEIE(发送缓冲区空中断使能):该位由如软件设置或清除。为0时禁止产生中断,为1时,当USART_SR中的TXE为“1”时,产生USART中断。

位6:TCIE(发送完成中断使能):该位由软件设置或清除。置为0时表示禁止产生中断,置为1时表示当USART_SR中的ORE或者RXNE为1时,产生USART中断。

位5:RXNEIE(接收缓冲区非空中断使能):该位由软件设置或清除,为0时表示禁止产生中断,为1时表示当USART_SR中的IDLE为1时,产生USART中断。

位4:IDLEIE(IDLE,总线空闲中断使能):该位由软件设置或清除。当为0时表示禁止产生中断,为1时当USART_SR中的IDLE为1时,产生USART中断。

位3:TE(发送使能):该位使能发送器,由软件设置或清除。为0时表示禁止发送,为1时表示使能发送。备注在数据传输过程中,除了在智能卡模式下,如果TE位上有个0脉冲(即设置为“0”之后,再设置为“1”),会在当前数据字传输完成后,发送一个前导符(空闲总线)。另外,在当TE被设置后,在真正的数据发送开始前,有一个比特时间的延迟。

位2:RE(接收使能):该位由软件设置或清除。当设置为0时,禁止接收,当设置为1时,使能接收并开始搜寻RX引脚上的起始位。

位1:RWU(接收唤醒):该位用来决定是否把USART设置为静默模式。该位由软件设置或清除,当唤醒序列到来时,硬件也会将其清零。置为0时表示接收器处于正常工作模式,置为1时,表示接收器处于静默模式。备注,在把USART置于静默模式(设置RWU位)之前,USART要已经先接受了一个数据字节,否则在静默模式下,不能被空闲总线检测唤醒。另外当配置为地址标记检测唤醒(wake位 = 1),在RXNE位被置位时,不能用软件修改RWU位。

位0:SBK(发送断开帧):使用该位来发送断开字符,该位可以由软件设置或清除。操作过程应该是软件设置位,然后再断开帧的停止位时,由硬件将其复位。当该位被设置为0时,表示没有发送断开字符,当设置为1时,表示将要发送断开字符。

5、控制寄存器2(U

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top