msp5438a串口通讯问题

xiaoxiao2021-02-28  24

目前在调试串口通讯程序,刚刚调试的时候都正常,后期出现问题就是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;}

转载请注明原文地址: https://www.6miu.com/read-2627848.html

最新回复(0)