430 串口优先级问题

2019-03-24 12:32发布

采用430 5438A来作为CPU,使用了它的4个串口来控制不同的仪器
是不是因为串口中断优先级都一样,所以一旦产生,就执行一个动作,而另外一个动作我不知道怎么去延后执行,所以就没掉了
在实验过程中,有个问题很严重,就是如果同时有俩个串口需要响应的话,只能执行其中1个串口的动作,另外一个串口的动作就不能执行,而且这个指令也消失了,有什么办法能解决这个问题么?


这是一位网友QQ上问我的问题。求解 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
zh2244ou
2019-03-24 22:32
/******************************************
UART0接收中断函数
PC传给下位机数据包
******************************************/

#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)

{
   unsigned char Temp0=0;
   Temp0=UCA0RXBUF;
   if((preinput0 == SLIP_ESC)&&(Temp0 == (SLIP_ESC+1)))
      {
         RX0Buffer[datalen0++] = SLIP_END;//收到0xDB 0XDC 转换为 (SLIP_END)0xC0        
      }          
         else if((preinput0 == SLIP_ESC)&&(Temp0 == (SLIP_ESC+2)))
           {
              RX0Buffer[datalen0++] = SLIP_ESC;   //收到0xDB 0XDD 转换为 (SLIP_ESC)0XDB
           }
              else if(Temp0 == SLIP_END)         //帧尾
                {
                   if(datalen0 >= 2)
                     {       
                        com0_receive_frame=1;           
                        com0_datalen=datalen0;
                        datalen0=0;
                  
                     }
                   }
                   else if(Temp0!=SLIP_ESC)
                     {
                    
                        RX0Buffer[datalen0++]=Temp0;
                        
                     }   
                preinput0=Temp0;
}

这段是我串口1中断的程序。

一周热门 更多>

相关问题

    相关文章