[分享] msp430f5529简单uart源程序(用串口助手 发什么 回复什么)

Aguilera   2020-2-14 20:30 楼主

单片机源程序如下:

  1. /*****用串口助手 发什么  回复什么****/
  2.  
  3.  
  4.  
  5. #include "msp430f5529.h"
  6. // ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz
  7. // P3.4,5——USCI_A0 TXD/RXD;P9.4,5——USCI_A2 TXD/RXD;P10.4,5——USCI_A3 TXD/RXD;
  8. void main(void)
  9. {
  10.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  11.   P4SEL |=BIT4+BIT5 ;                             // P5.6,7 = USCI_A1 TXD/RXD
  12.   UCA1CTL1 |= UCSWRST;                      // **Put state machine in reset**
  13.   UCA1CTL1 |= UCSSEL_2;                     // SMCLK
  14.   UCA1BR0 = 9;                              // 1MHz 115200 (see User's Guide)
  15.   UCA1BR1 = 0;                              // 1MHz 115200
  16.   UCA1MCTL |= UCBRS_1 + UCBRF_0;            // Modulation UCBRSx=1, UCBRFx=0
  17.   UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  18.   UCA1IE |= UCRXIE;                         // Enable USCI_A1 RX interrupt
  19.   __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
  20. }
  21. // Echo back RXed character, confirm TX buffer is ready first,发送数据之前确定发送缓存准备好
  22. #pragma vector=USCI_A1_VECTOR
  23. __interrupt void USCI_A1_ISR(void)
  24. {
  25.   switch(__even_in_range(UCA1IV,4))
  26.   {
  27.   case 0:break;                             // Vector 0 - no interrupt
  28.   case 2:                                   // Vector 2 - RXIFG
  29.    while (!(UCA1IFG&UCTXIFG));    // USCI_A1 TX buffer ready?   UCTXIFG(USCI Transmit Interrupt Flag)
  30.                                    //等待数据发送完成 完成UCTXIFG置1 跳出循环
  31.     UCA1TXBUF = UCA1RXBUF;                  // TX -> RXed character
  32.     break;
  33.   case 4:break;                             // Vector 4 - TXIFG
  34.   default: break;
  35.   }
  36. }
  37. // UCTXIFG=0x02,UCA1IFG&UCTXIFG,当UCA1IFG的UCTXIFG位为1时,说明UCA1TXBUF为空,
  38. //跳出while循环循环;当UCTXIFG位为0时UCA1TXBUF不为空,停在循环。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复