重点看2部分图
USART_FLAG_TXE:发送缓冲区空标志
USART_FLAG_TC:发送完成标志
串口发送的流程:
1)发送使能位置1,发送器先发送一个空闲帧
2)往数据寄存器(TDR)中写入要发送的数据。
3)数据从数据寄存器转入发送移位寄存器,并在最后一位数据转入完成后,置USART_FLAG_TXE为1,表示数据寄存器为空,下一组数据可以进入了。
4)数据进入发送移位寄存器后,一位一位的通过Tx发送出去,当最后一位数据发送完成后,置USART_FLAG_TC为1,表示移位寄存器为空。
void Usart_SendByte(USART_TypeDef* USARTx,uint8_t byte)
{
//#define USART1 ((USART_TypeDef *) USART1_BASE)
//把USART1_BASE强制转换成USART_TypeDef *的指针
while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE) == RESET)
{
}//判断是否可以发送
USART_SendData(USARTx,byte);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC) == RESET)
{
}//等待发送完成
}
(十一).从零开始学stm32--USART_FLAG_TXE和USART_FLAG_TC
原文:https://www.cnblogs.com/jiutianzhiyu/p/12885225.html