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

STM32 串口TXE和TC标志位的理解
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述如果TDR寄存器有数据TXE标志位就是0,0&上USART_FLAG就是0,0不等于0,就执行else,bitstatus就被赋值为0,那么我们函数的返回值就是0,我们就可以用if判断函数FlagStatus的返回值,看我们的数据是否发送完毕。
if( USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==0),这样的话我们就可以一直发送数据了。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值