主题中讨论的其他部件:MSP430FR6047, MSP430F5528
大家好,
以下是客户提出的问题,可能需要您的帮助:
通过使用例程msp430fr60x7_euscia0_UART_02.c (此例程为eUSSCI_A0)刻录开发板,可以实现数据回波。 但是,在将程序更改为eUSI_A1之后,在刻录开发板后不能输入中断,如下所示:
#include <msp430.h> int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop Watchdog // Configure GPIO P1SEL0 &= ~(BIT2 | BIT3); P1SEL1 |= BIT2 | BIT3; // USCI_A1 UART operation PJSEL0 |= BIT4 | BIT5; // For XT1 // Disable the GPIO power-on default high-impedance mode to activate // previously configured port settings PM5CTL0 &= ~LOCKLPM5; // XT1 Setup CSCTL0_H = CSKEY_H; // Unlock CS registers CSCTL2 = SELA__LFXTCLK | SELS__DCOCLK | SELM__DCOCLK; CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1; // Set all dividers CSCTL4 &= ~LFXTOFF; do { CSCTL5 &= ~LFXTOFFG; // Clear XT1 fault flag SFRIFG1 &= ~OFIFG; } while (SFRIFG1 & OFIFG); // Test oscillator fault flag CSCTL0_H = 0; // Lock CS registers // Configure USCI_A1 for UART mode UCA1CTLW0 = UCSWRST; // Put eUSCI in reset UCA1CTLW0 |= UCSSEL__ACLK; // CLK = ACLK UCA1BRW = 3; // 9600 baud UCA1MCTLW |= 0x5300; // 32768/9600 - INT(32768/9600)=0.41 // UCBRSx value = 0x53 (See UG) UCA1CTLW0 &= ~UCSWRST; // Initialize eUSCI UCA1IE |= UCRXIE; // Enable USCI_A1 RX interrupt __bis_SR_register(LPM3_bits | GIE); // Enter LPM3, interrupts enabled __no_operation(); // For debugger } #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=EUSCI_A1_VECTOR __interrupt void USCI_A1_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(EUSCI_A1_VECTOR))) USCI_A1_ISR (void) #else #error Compiler not supported! #endif { switch(__even_in_range(UCA1IV, USCI_UART_UCTXCPTIFG)) { case USCI_NONE: break; case USCI_UART_UCRXIFG: while(!(UCA1IFG&UCTXIFG)); UCA1TXBUF = UCA1RXBUF; __no_operation(); break; case USCI_UART_UCTXIFG: break; case USCI_UART_UCSTTIFG: break; case USCI_UART_UCTXCPTIFG: break; default: break; } }
您可以帮助检查此问题吗? 谢谢。
此致,
樱桃