我用的芯片是F107,目前情况是这样的:我用串口3接收PC的串口助手的数据;
串口助手定时100ms发送一次,如果每次发送一个字节,则接收正常,接收到的数据个数也是对的,但是如果一次发送一组数据,则接收到的数据个数不对,也就是丢数据了,我看了数据缓存,中间的确丢数据了
下面是串口中断里的代码:
[mw_shl_code=c,true]u8 WireTest[2046];
u16 wire = 0;
void USART3_IRQHandler(void)
{
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
WireTest[wire] = USART_ReceiveData(USART3);//USART3->DR;
wire++;
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
if (Usart_RecCounter > MAX_REC_WIRELESS)
{
Usart_RecCounter = 0;
}
}
if(USART_GetITStatus(USART3, USART_IT_TXE) != RESET)
{
USART_ClearITPendingBit(USART3, USART_IT_TXE);
}
}[/mw_shl_code]
上图中明显看到,发送了1116个字节,但是只接收到了1087个字节
上图中明显丢数据了,有时候会一次丢3-4个字节
注:我修改过波特率,115200,19200,9600都试过,也试过把发送的时间间隔改大点,改到500ms都还是丢数据,1s以上基本就不丢了,但是1s时间太久了,完全达不到设计要求。
希望原子哥帮忙看一下。
|