STM32 串口TXE和TC标志位的理解

STM32 串口TXE和TC标志位的理解
STM32 串口TXE和TC标志位的理解_第1张图片
STM32 串口TXE和TC标志位的理解_第2张图片

我们发送数据的时候是先放在数据寄存器(TDR),然后在往移位寄存器里面丢,TXE就是用来判断我们的数据寄存器里面有数据没有,如果为1表示TDR里面的数据全部移到了移位寄存器,并且没有新的数据进来,0就是表示有数据。TC是判断移位寄存器的,但是我们一定要先读SR寄存器,然后再写DR寄存器,也就是移位寄存器,才能让数据一直发送,如果先写入,数据就会丢失。为啥是这样?因为我们的数据寄存器里面有数据时,TXE就会由硬件自动置0,而我们的TC不会,我们要先由软件判断是否有数据,如果有才会置0。

STM32 串口TXE和TC标志位的理解_第3张图片如果TDR寄存器有数据TXE标志位就是0,0&上USART_FLAG就是0,0不等于0,就执行else,bitstatus就被赋值为0,那么我们函数的返回值就是0,我们就可以用if判断函数FlagStatus的返回值,看我们的数据是否发送完毕。
if( USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==0),这样的话我们就可以一直发送数据了。
STM32 串口TXE和TC标志位的理解_第4张图片

你可能感兴趣的:(stm32,单片机)