使用下面这个单独测试串口0与串口1的收发。发现只有串口0可以把PC发来数据传回PC,而串口1却不能。所以很疑惑,我最近两天才接触MSP430,麻烦大侠能告诉我原因。
#include <msp430x14x.h>
void UART0_Init(void);
void UART1_Init(void);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
UART0_Init();
UART1_Init();
while(1);
}
void UART0_Init(void)
{
P3SEL |= BIT4;
P3SEL |= BIT5;
P3DIR |= BIT4;
ME1 |= UTXE0 + URXE0;
UCTL0 |= CHAR;
UTCTL0 |= SSEL0;
UBR00 = 0x03;
UBR10 = 0x00;
UMCTL0 = 0x4A;
UCTL0 &= ~SWRST;
IE1 |= URXIE0;
_BIS_SR(LPM3_bits + GIE);
}
#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{
_BIS_SR(GIE);
while (!(IFG1 & UTXIFG0));
TXBUF0 = RXBUF0;
}
void UART1_Init(void)
{
P3SEL |= BIT6;
P3SEL |= BIT7;
P3DIR |= BIT6;
ME2 |= UTXE1 + URXE1;
UCTL1 |= CHAR;
UTCTL1 |= SSEL0;
UBR01 = 0x03;
UBR11 = 0x00;
UMCTL1 = 0x4A;
UCTL1 &= ~SWRST;
IE2 |= URXIE1;
_BIS_SR(LPM3_bits + GIE);
}
#pragma vector=USART1RX_VECTOR
__interrupt void usart1_rx (void)
{
while (!(IFG2 & UTXIFG1));
TXBUF1 = RXBUF1;
}
#include <msp430x14x.h>
void UART0_Init(void);
void UART1_Init(void);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
UART0_Init();
UART1_Init();
while(1);
}
void UART0_Init(void)
{
P3SEL |= BIT4;
P3SEL |= BIT5;
P3DIR |= BIT4;
ME1 |= UTXE0 + URXE0;
UCTL0 |= CHAR;
UTCTL0 |= SSEL0;
UBR00 = 0x03;
UBR10 = 0x00;
UMCTL0 = 0x4A;
UCTL0 &= ~SWRST;
IE1 |= URXIE0;
_BIS_SR(LPM3_bits + GIE);
}
#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{
_BIS_SR(GIE);
while (!(IFG1 & UTXIFG0));
TXBUF0 = RXBUF0;
}
void UART1_Init(void)
{
P3SEL |= BIT6;
P3SEL |= BIT7;
P3DIR |= BIT6;
ME2 |= UTXE1 + URXE1;
UCTL1 |= CHAR;
UTCTL1 |= SSEL0;
UBR01 = 0x03;
UBR11 = 0x00;
UMCTL1 = 0x4A;
UCTL1 &= ~SWRST;
IE2 |= URXIE1;
_BIS_SR(LPM3_bits + GIE);
}
#pragma vector=USART1RX_VECTOR
__interrupt void usart1_rx (void)
{
while (!(IFG2 & UTXIFG1));
TXBUF1 = RXBUF1;
}
![](http://b.hiphotos.bdimg.com/album/s%3D1100%3Bq%3D90/sign=b5c52e37fbedab64707249c1c70694b2/caef76094b36acaf3f17c6007cd98d1000e99c52.jpg?v=tbs)