初级会员

- 积分
- 112
- 金钱
- 112
- 注册时间
- 2018-6-10
- 在线时间
- 22 小时
|
原子官方提供的SYSTEM文件夹里的usart实验,main函数里面,有这么一段程序:
******************************************************
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;
printf("\r\n您发送的消息为:\r\n");
for(t=0;t<len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}
printf("\r\n\r\n");
USART_RX_STA=0;
}
***************************************************
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);这句函数的主要目的是等待TC置1后(数据从移位寄存器发送出去后)再发送下一节数据
但是用while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)!=SET);替换上面那一句,即,将标志位TC替换成TXE,数据发送就出现了问题,出现了乱码。
请问大神们~~TXE=1,表示USART->DR(TDR)的值转移到移位寄存器了,准备发送,但是不一定已经发送出去了,不过此时由于TDR寄存器的数据已经搬走,说明你可以写新的数据岛USART->DR里面了,但是为什么会出现乱码??是不是用TC标志位来判断数据发送成功没有是最为稳妥的?假如为了提高发送效率,用TXE作为判断标志位,该怎么改???
|
|