请教449的两个串口间通信问题

cd001   2007-10-12 01:07 楼主
想通过msp430f449将上位机的命令从uart0上发出去,再将数据通过449从uart1返回上位机,
即命令:上位机-->rxbuf1-->txbuf0-->out
数据:out-->rxbuf0-->txbuf1-->上位机
初始化两个串口后使用以下中断程序,发现uart0的rxbuf和txbuf总是联动,得不到正确的数据。

#pragma vector=UART1RX_VECTOR
__interrupt void usart1_rx (void)
{
while (!(IFG2 & UTXIFG1));
TXBUF0 = RXBUF1;
}

#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
while (!(IFG1 & UTXIFG0));
TXBUF1 = RXBUF0;
}

请大虾指教,非常感谢

回复评论 (4)

自己顶一下

哪位大虾帮我看看,谢谢!
点赞  2007-10-15 22:55
请先确定你的硬件接对了没?还有如果你两串口BAUD不一样不能全双工工作!
点赞  2007-10-16 13:22

硬件单独测两个串口都没有问题

都是设置的9600,8,N,1
点赞  2007-10-17 09:31

初始化程序如下

WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP14PF; // Configure load caps
ME1 |= UTXE0 +URXE0;
ME2 |= UTXE1 +URXE1;
UCTL0 |= CHAR;
UTCTL0 |= SSEL1;
UCTL1 |= CHAR;
UTCTL1 |= SSEL1;
UBR00 = 0x6D; // USART0,1MHz 9600
UBR10 = 0x00; // USART0,1MHz 9600
UMCTL0 = 0x00; // USART0,modulation
UBR01 = 0x6D; // USART1,1MHz 9600
UBR11 = 0x00; // USART1,1MHz 9600
UMCTL1 = 0x00; // USART1,modulation
UCTL0 &= ~SWRST; // Initialize USART0 state machine
UCTL1 &= ~SWRST; // Initialize USART1 state machine
IE1 |= URXIE0; // Ena××e USART0 RX interrupt
IE2 |= URXIE1; // Ena××e USART1 RX interrupt
P2SEL |= 0x30; // USART0 PORT ENA××E
P2DIR |=0x10; // USART0 PORT ENA××E
P4SEL |= 0x03; // USART1 PORT ENA××E
P4DIR |=0x01; // USART1 PORT ENA××E
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
点赞  2007-10-17 09:32
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复