社区导航

 

搜索
查看: 259|回复: 0

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

[复制链接]

3026

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 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不为空,停在循环。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-2-27 22:50 , Processed in 0.078433 second(s), 16 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表