初级会员

- 积分
- 92
- 金钱
- 92
- 注册时间
- 2019-10-20
- 在线时间
- 28 小时
|
1金钱
USART3接收GPS信号(GPS模块每间隔1秒,发一组数据),使用的是串口3中断
void USART3_IRQHandler(void)
{
u8 res3 = 0;
if (USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
res3 = USART_ReceiveData(USART3);
RevBuff3[usart3_in++] = res3;
flag3 = 1;
}
LED1=!LED1;
}
问题:开始可以正常接收(LED1闪烁),但是几分钟后,卡死(LED1不闪烁),而且单片机无响应,原因是数组变量“usart3_in++”超过了数组长度(设置的10000),用了ORE溢出清除信号也没用,但是不知道如何解决?
我把中断服务函数后加一个usart3_in=0,就不会卡死了,但是RevBuff3[]数据就没了,保存不到
大佬们帮个忙,谢谢!!!!!!!!!
|
|