Interrupt handling 使用外部中断时,UART数据丢失

Interrupt handling 使用外部中断时,UART数据丢失,interrupt-handling,arm7,Interrupt Handling,Arm7,我在ARM7 lpc2378中使用两个中断: UART1从外部模块接收数据 用于ADC读取的外部中断 在执行外部中断ISR期间,由于中断被禁用,来自UART1的数据丢失 在执行其他ISR时,我应该如何收集或保存UART1数据 为了确保UART1中的数据不会丢失,应该采取什么措施?我不知道这个特定微控制器的详细信息,但通常您应该尽可能少地在ISR中花费时间:不要在那里进行任何昂贵的处理。例如,在您的ISR中,读取重要信息,将其写入一些变量,然后离开ISR。在应用程序的主循环中,对变量变化做出反应(

我在ARM7 lpc2378中使用两个中断:

  • UART1从外部模块接收数据
  • 用于ADC读取的外部中断
  • 在执行外部中断ISR期间,由于中断被禁用,来自UART1的数据丢失

    在执行其他ISR时,我应该如何收集或保存UART1数据


    为了确保UART1中的数据不会丢失,应该采取什么措施?

    我不知道这个特定微控制器的详细信息,但通常您应该尽可能少地在ISR中花费时间:不要在那里进行任何昂贵的处理。例如,在您的ISR中,读取重要信息,将其写入一些变量,然后离开ISR。在应用程序的主循环中,对变量变化做出反应(有几种方法可以实现这一点,因此我将以一种非常通用的方式对此进行描述)。

    在ISR开始时启用中断听起来像是一个简单的解决方案(尽管它通常应用于中断向量本身,就在调用ISR之前).你的uart有fifo吗?它启用了吗?您是否在isr中花费了最短的时间?为什么禁用uart isr?因为两个中断事件都是异步的,UART1中的数据丢失并不频繁,但保存UART1数据而不在任何情况下丢失是一项重要任务。在我的项目中,外部中断ISR最多需要7.5毫秒,在此期间,UART1接收到的数据有时会丢失。现在,即使我减少了外部中断ISR处理时间,但也有可能丢失UART1数据,我不想错过它。必须有某种方法或技巧来处理此类案件。