單片機源程序如下:
- /*****用串口助手 發什么 回復什么****/
- #include "msp430f5529.h"
- // ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz
- // P3.4,5——USCI_A0 TXD/RXD;P9.4,5——USCI_A2 TXD/RXD;P10.4,5——USCI_A3 TXD/RXD;
- void main(void)
- {
- WDTCTL = WDTPW + WDTHOLD; // Stop WDT
- P4SEL |=BIT4+BIT5 ; // P5.6,7 = USCI_A1 TXD/RXD
- UCA1CTL1 |= UCSWRST; // **Put state machine in reset**
- UCA1CTL1 |= UCSSEL_2; // SMCLK
- UCA1BR0 = 9; // 1MHz 115200 (see User's Guide)
- UCA1BR1 = 0; // 1MHz 115200
- UCA1MCTL |= UCBRS_1 + UCBRF_0; // Modulation UCBRSx=1, UCBRFx=0
- UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
- UCA1IE |= UCRXIE; // Enable USCI_A1 RX interrupt
- __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
- }
- // Echo back RXed character, confirm TX buffer is ready first,發送數據之前確定發送緩存準備好
- #pragma vector=USCI_A1_VECTOR
- __interrupt void USCI_A1_ISR(void)
- {
- switch(__even_in_range(UCA1IV,4))
- {
- case 0:break; // Vector 0 - no interrupt
- case 2: // Vector 2 - RXIFG
- while (!(UCA1IFG&UCTXIFG)); // USCI_A1 TX buffer ready? UCTXIFG(USCI Transmit Interrupt Flag)
- //等待數據發送完成 完成UCTXIFG置1 跳出循環
- UCA1TXBUF = UCA1RXBUF; // TX -> RXed character
- break;
- case 4:break; // Vector 4 - TXIFG
- default: break;
- }
- }
- // UCTXIFG=0x02,UCA1IFG&UCTXIFG,當UCA1IFG的UCTXIFG位為1時,說明UCA1TXBUF為空,
- //跳出while循環循環;當UCTXIFG位為0時UCA1TXBUF不為空,停在循環。
復制代碼
所有資料51hei提供下載:
msp430f5529簡單uart程序.doc
(15 KB, 下載次數: 36)
2018-7-20 09:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
MSP430F5529 LaunchPad Development Kit (MSP-EXP430F5529LP) User's Guide (Rev. D).pdf
(2.83 MB, 下載次數: 17)
2018-7-20 09:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|