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