在使用迪文T5L系列单片机的时候,点击某个控件总是引起系统复位,通过监控,单片机并没有程序跑飞或者独立看门狗复位,经过仔细对比发现是STM32F4单片机的接收中断函数在进入之后未清除标志位引起,具体如下:
void USART2_IRQHandler(void) //串口2接收中断
{
static u8 Res2;
static u8 RXA5=0,RX5A=0;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //½ÓÊÕÖжÏ(½ÓÊÕµ½µÄÊý¾Ý±ØÐëÊÇ0x0d 0x0a½áβ)
{
USART_ClearITPendingBit(USART2,USART_IT_RXNE); //这条一定不能少,否则就会引起可能宕机或者重启;
if(!RXFRMOK2)
{
Res2 =USART_ReceiveData(USART2);
if(RX5A)
{
if(RXA5)
{
rec2[LEN2]=Res2;
LEN2++;
if(LEN2==(rec2[0]+1))
{
RXFRMOK2=1;
RX5A=RXA5=0;
}
}
else
{
if(Res2==0xA5)
{
RXA5=1;
LEN2=0;
}
else
{
RX5A=0;
}
}
}
else
{
if(Res2==0x5A)
{
RX5A=1;
}
}
}
}
}
将标志位清除之后,一切正常,触摸屏可以随意快速点击都OK了;谨记!