void main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
Uart0_Init();
Uart1_Init();
__bis_SR_register(GIE);
while(1)
{
}
}
同时初始化USCIA0和USCIA1,先初始化的一个将会不能使用,这是怎么回事?
初始化代码如下,USCIA0:
void Uart0_Init(void)
{
BCSCTL1 &= ~XT2OFF;
BCSCTL2 |= SELM_2 + SELS;
P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 0x45; // 8MHz 115200
UCA0BR1 = 0x00; // 8MHz 115200
UCA0MCTL = 4; // Modulation UCBRSx = 4
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
}
USCIA1:
void Uart1_Init(void)
{
BCSCTL1 &= ~XT2OFF;
BCSCTL2 |= SELM_2 + SELS;
P3SEL = 0xC0; // P3.6,7 = USCI_A1 TXD/RXD
UCA1CTL1 |= UCSSEL_2; // CLK = SMCLK
UCA1BR0 = 0x45; // 8MHz 115200
UCA1BR1 = 0x00; // 8MHz 115200
UCA1MCTL = 4; // Modulation UCBRSx = 4
UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
UC1IE |= UCA1RXIE; // Enable USCI_A1 RX interrupt
}
时钟源选择XT2,8M时钟,两个USCI模块的时钟源都为SMCLK,1分频。