为什么串口接收中断会反复被触发执行

2019-03-24 15:32发布

void UART1_ISR(void)
{
    unsigned long ulStatus;
    ulStatus=UARTIntStatus(UART1_BASE,true);     //   读取当前中断状态
    UARTIntClear(UART1_BASE,ulStatus);//   清除中断状态

   
    GPIOPinWrite(LED_PORT,LED_PIN, 0XFF);
    SysCtlDelay(1000 * (TheSysClock / 3000));
    GPIOPinWrite(LED_PORT,LED_PIN, 0X00);
    SysCtlDelay(1000 * (TheSysClock / 3000));
   
   

   
  
}
   
//  主函数(程序入口)
int main(void)
{
    clockInit();                                      //  时钟初始化:晶振,6MHz
    SysCtlPeriEnable(LED_PERIPH);                           //  使能LED所在的GPIO端口
    GPIOPinTypeOut(LED_PORT, LED_PIN);                      //  设置LED所在管脚为输出
    uartInit();                                             //  UART初始化
   
    for(;;);
}

我开了串口接收终端和接收超时中断  然后用串口调试助手给M3只发送了一次数据  只有一个字节 然而上面程序运行结果却是中断处理函数被反复触发执行呢 就像进入死循环一样  我只发了一次数据 而且只有一个字节 并且中断触发后也有清中断语句  所以不理解  请高手指点 小弟不胜感激 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
Study_Stellaris
2019-03-25 08:30
嗯,应该是这个原因,在接收中断里边,没有将 FIFO 里的数据读走,次数多了就会造成 FIFO 溢出,而溢出中断又没有开启,实际上后续的数据就丢了。

一周热门 更多>

相关问题

    相关文章