430 串口优先级问题

2019-03-24 12:32发布

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


这是一位网友QQ上问我的问题。求解 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
辛昕
1楼-- · 2019-03-24 14:48
 精彩回答 2  元偷偷看……
zh2244ou
2楼-- · 2019-03-24 18:52
< :TI_MSP430_内容页_SA7 --> 谢谢,是这样子的,比如说通讯协议是包头+指令地址+数据长度+数据+包尾,例如C0 04 01 02 C0
在调试中,上位机单个指令发下去,都能够进行操作,但是如果发的是俩个指令,如
C0 04 01 02 C0 C0 02 05 11 22 33 44 55 C0这样的俩个动作,可能串口1程序中断判断第一个数据接收玩了,然后就去执行第一个指令,第二个指令就不执行了,我想问下这样的延后执行怎么在下位机软件里编写?
zh2244ou
3楼-- · 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中断的程序。
zh2244ou
4楼-- · 2019-03-25 00:13
 精彩回答 2  元偷偷看……
Triton.zhang
5楼-- · 2019-03-25 01:52
从程序流程上看没什么特别大的问题.
你所说的执行完一个串口的命令,另一个串口的命令就丢失了是因为你所有的串口接收到的数据都存放在同一个缓冲里面.执行完命令后缓冲被清零了。如果你要处理4个不同的串口,建议你用不同的缓存接收命令,分别处理。
Triton.zhang
6楼-- · 2019-03-25 04:06
这个问题和串口优先级没有任何关系。

一周热门 更多>

相关问题

    相关文章