想写一个简单的串口通信程序(中断接收pc发送的数据,并随之发送给pc),大概内容如下:初始化USART1和NVIC,USART1_Config();NVIC_Config();中断函数如下:voidUSART1_IRQHandler(vo...
想写一个简单的串口通信程序(中断接收pc发送的数据,并随之发送给pc),大概内容如下:
初始化USART1和NVIC,
USART1_Config();
NVIC_Config();
中断函数如下:
void USART1_IRQHandler(void)
{
u8 i;
/*处理接收到的数据*/
if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET)
{
i = USART_ReceiveData(USART1);
USART_SendData(USART1,USART_ReceiveData(USART1));
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{
}
}
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}
问题:简单的单个字节通信没有问题,但当在pc端快速发送一个字节如'1' ,那么就会出现接收到的数据量比发出去的数据量少,即有一些数据丢失了。
请问该如何解决这个问题啊????
感谢各位热心网友的积极回答,我单步调试后解决了,主要是我的USART1初始化有问题,我在初始化的时候把接收中断和发送中断都使能了,以至于在在接收中断中发送数据时出问题,接收中断和发送中断应该是同一个中断函数吧。
总之,我将初始化中的发送中断使能去了之后完全不会出现数据丢失问题,发送时间间隔在0.2ms都没有问题。
展开