msp5438a串口通讯问题

目前在调试串口通讯程序,刚刚调试的时候都正常,后期出现问题就是4个串口中只有一个能正常发送数据,另外三个均无响应。程序如下,4个串口配置内容相进唯一一个UCA2CTL1 为1200波特率,数据发送正常,其他三个波特率为9600数据发送失败。

还有一个现象就是当多个串口同时发送的时候,数据发送正常,而如果只是单个发送就只有UCA2CTL1 发送数据正常

/****************初始化********************/
void uart_init(void)
{
     P9DIR |= BIT0 ;
     P9DIR &= ~BIT6 ;
     P9SEL |= BIT5+BIT4 ;
     
     P3DIR |= BIT3;                        // P3.3 = R&W ENABLE
     P3SEL |= BIT5+BIT4;                        // P3.4,5 = USCI_A0 TXD/RXD
     
     P5DIR |= BIT5;                        // P5.5 = R&W ENABLE
     P5SEL |= BIT6+BIT7;                        // P5.6,7 = USCI_A1 TXD/RXD    
     
     P10DIR |= BIT3;                        // P5.5 = R&W ENABLE
     P10SEL |= BIT5+BIT4;  
     
     RS485_0IN;
     RS485_1IN;
     RS485_2IN;
     GPRS_EN_OFF ;
     
     UCA0CTL1 |= UCSWRST;                      
     UCA0CTL1 |= UCSSEL_1 ;                   // CLK = ACLK
     UCA0BR0 = 0x03;                         // 2.45MHz/9600=3.41 
     UCA0BR1 = 0x00;                           
     UCA0MCTL = UCBRS_3;  // Modulation UCBRSx=0, UCBRFx=15
     UCA0CTL1 &= ~UCSWRST;                     
     UCA0IE |= UCRXIE;    
     
     UCA1CTL1 |= UCSWRST;                      
     UCA1CTL1 |= UCSSEL_1 ;                   // CLK = ACLK
     UCA1BR0 = 0x03;                         // 2.45MHz/9600=3.41 
     UCA1BR1 = 0x00;                           
     UCA1MCTL = UCBRS_3;  // Modulation UCBRSx=0, UCBRFx=15
     UCA1CTL1 &= ~UCSWRST;                     
     UCA1IE |= UCRXIE; 
     
     UCA2CTL1 |= UCSWRST;                      
     UCA2CTL1 |= UCSSEL_1 ;                   // CLK = ACLK
     UCA2BR0 = 0x1b;                         // 2.45MHz/9600=3.41 
     UCA2BR1 = 0x00;                           
     UCA2MCTL = UCBRS_4;  // Modulation UCBRSx=0, UCBRFx=15
     UCA2CTL1 &= ~UCSWRST;                     
     UCA2IE |= UCRXIE ; 
     
     UCA3CTL1 |= UCSWRST;                      
     UCA3CTL1 |= UCSSEL_1 ;                   // CLK = ACLK
     UCA3BR0 = 0x03;                         // 2.45MHz/9600=3.41 
     UCA3BR1 = 0x00;                           
     UCA3MCTL = UCBRS_3;  // Modulation UCBRSx=0, UCBRFx=15
     UCA3CTL1 &= ~UCSWRST;                     
     UCA3IE |= UCRXIE; 
}


/*****************表1通讯********************/
void TX_send(uchar* data,uchar count)
{
  RS485_1OUT;
  uchar i,j,k;
  for(i=0;i<count;i++)
  {
    j=254,k=254;
    UCA1TXBUF = data[i];                
    while(UCA1STAT&BIT0)//usart1 tx发送完毕
    {
      if(j==0)
      {
        j=254;
        k--;
      }
      else
        j--;
      if(k==0)
        flag_tx=1;
      if(flag_tx)
        break;
    }
  }
    RS485_1IN;
    rx_data_bit=0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值