新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2019-5-4
- 在线时间
- 6 小时
|
1金钱
int main(void)
{
u8 len;
u8 i;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
led_init();
key_init();
exti_init();
delay_init(168);
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;
for(i=0;i<len;i++)
{
USART_SendData(USART1,USART_RX_BUF);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}
USART_RX_STA=0;
}
}
}
这是原子哥提供的例程代码,while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);TC寄存器不是发送完成标志吗?在这个地方我接收了一串字符,在for循环里向电脑发送这串字符,如果没有发送完的话,不就在这个while里死循环了??
|
最佳答案
查看完整内容[请看2#楼]
是一位一位的发送的呀!不过USART_SendData()函数是将一个字节的数据放到数据寄存器中让串口一位一位发送,while的作用就是先不让函数继续走了,先停在这里,不过单片机内部还是在执行移位(发送)操作,内部执行完之后,硬件会将发送结束标志位置1,然后这个时候就可以退出while循环!
|