用测试官方板子这个时没有问题的,
如果用USB 转 串口会出现乱码,
默认频率是 1048576HZ还是1M?
1048576/115200=9.10
按官方手册查表(Table 22-5)也是 UCA0BR0 = 9;
如果 改成 UCA0BR0 = 9; 一切正常
@ TI FAE 不要不回,如果是我错了,请指出,如果是你们错了,你也说下,我们好判断问题,如果你们不回我们,如何确认是不是问题真的解决了。文档错了改过来就是了,谁也无法保证自己的产品100%完美
ti 越来越不严谨了,
#include <msp430.h>
unsigned char RXData = 0;
unsigned char TXData = 1;
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
PM5CTL0 &= ~LOCKLPM5; // Disable the GPIO power-on default high-impedance mode
// to activate previously configured port settings
P1DIR |= BIT0;
P1OUT &= ~BIT0; // P1.0 out low
// Configure UART pins
P1SEL0 |= BIT4 | BIT5; // set 2-UART pin as second function
// Configure UART
UCA0CTLW0 |= UCSWRST; // Put eUSCI in reset
UCA0CTLW0 |= UCSSEL__SMCLK;
// Baud Rate calculation
UCA0BR0 = 8; // 1000000/115200 = 8.68
UCA0MCTLW = 0xD600; // 1000000/115200 - INT(1000000/115200)=0.68
// UCBRSx value = 0xD6 (See UG)
UCA0BR1 = 0;
UCA0CTLW0 &= ~UCSWRST; // Initialize eUSCI
UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt
while (1)
{
while(!(UCA0IFG & UCTXIFG));
UCA0TXBUF = TXData; // Load data onto buffer
__bis_SR_register(LPM0_bits|GIE); // Enter LPM0
__no_operation(); // For debugger
}
}
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
#else
#error Compiler not supported!
#endif
{
switch(__even_in_range(UCA0IV,USCI_UART_UCTXCPTIFG))
{
case USCI_NONE: break;
case USCI_UART_UCRXIFG:
UCA0IFG &=~ UCRXIFG; // Clear interrupt
RXData = UCA0RXBUF; // Clear buffer
if(RXData != TXData) // Check value
{
P1OUT |= BIT0; // If incorrect turn on P1.0
while(1); // trap CPU
}
TXData++; // increment data byte
__bic_SR_register_on_exit(LPM0_bits); // Exit LPM0 on reti
break;
case USCI_UART_UCTXIFG: break;
case USCI_UART_UCSTTIFG: break;
case USCI_UART_UCTXCPTIFG: break;
}
}