int main(void)
{
u8 time,data;
RCC_Configuration();
GPIO_Configuration();
USART_Configuration ();
data='A';
for(time=0;time<20;time++){
while(USART_GetFlagStatus( USART1, USART_FLAG_TC)==RESET);
USART_SendData(USART1,data);
data++;
while(1);
}
为什么我在加上while(1)的时候串口窗口里收到的数据有20个,去掉while(1)的时候,只接受到19个,最后一个T丢失了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
先说你的情况:首先 每发完一组串口数据 都要等待发送完成标志位 也就是这句while(USART_GetFlagStatus( USART1, USART_FLAG_TC)==RESET); 干的事 而当你发完最后一组时 没有while(USART_GetFlagStatus( USART1, USART_FLAG_TC)==RESET);这句了 这时 有没有while(1)就起作用了 我认为while(1)起到的作用就是while(USART_GetFlagStatus( USART1, USART_FLAG_TC)==RESET);这句的作用 没有while(1)程序就跑飞了。
颠倒过来的情况:我建议你串口初始化完成后 延迟几百毫秒试一试
一周热门 更多>