串口就是8位8位传送的。即一个字节。一定利用好控制寄存器。TXE RXNE等
一个字节产生一个中断。
(1)数据发送过程
当使能了发送使能位TE后,数据要发送出去,首先要将数据写进USART_DR寄存器(和51单片机SBUF
一样,
USART_DR寄存器实际包含了两个寄存器,给发送用的TDR和给接收用的RDR,在
USART_DR寄存器下还有一个发送/接收移位寄存器,数据的发送接收最后都要通过移位寄存器
),如果此时USART正在发送数据,写入的数据先保存在TDR寄存器中,传输完成后再把该数据复制进移位寄存器。如果此时USART没有在发送数据,对USART_DR寄存器的写操作,数据直接存放进移位寄存器。无论哪种方式,数据存进移位寄存器后,便开始发送,TXE被置位,当一帧数据发送完(停止位发送后),TC位被置位,并且如果USART_CR1的TCIE位被置位,将产生中断。数据的发送是从低位发送起。
(2)数据的接收过程
当USART_CR1的RE位被使能后,且接收器的RX端由高电平被拉为低电平,那么接收开始。数据的最低有效位首先从RX脚移进移位寄存器。
■
当RXNE(接收数据寄存器非空标志位)被置位,表明移位寄存器的内容被转移到RDR,此时数据已经被接收并且可以被读出,USART_DR和相关的错误标志位。
■
如果RENEIE位被置位,将产生中断,如果在接收期间,检测到侦错误、噪音、溢出错误,错误标志位将被置位。
■
在多缓冲器通信时, RXNE在每个字节接收后被置起,并由DMA对数据寄存器的读操作而
清零。
■
在单缓冲器模式里,由软件读USART_DR寄存器完成对RXNE位清除。 RXNE标志也可以通
过对它写0来清除。 RXNE位必须在下一字符接收结束前被清零,以避免溢出错误。