快捷搜索: 王者荣耀 脱发

MSP430f5529LP通过串口数据控制LED亮灭

基于MSP430f5529LP的程序

根据TI官网的串口回环例程改编,判断串口接收的数据。如果接收到“1”就点亮LED1,熄灭LED2;接收到“2”点亮LED2,熄灭LED1;接收到“3”同时点亮两个LED;接收到“4”同时熄灭两个LED。

演示

串口调试助手设置如下

接线图如下

程序

#include <msp430.h>

void sendstring(unsigned char *p)
{
          
   
    while(*p!=)
    {
          
   
        while(!(UCA0IFG&UCTXIFG));
        UCA0TXBUF=*p++;
    }
}

int main(void)
{
          
   
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  P1DIR |= BIT0;                            //P1.0方向
  P1OUT &= ~ BIT0;                          //P1.0输出低电平
  P4DIR |= BIT7;                            //P4.7方向
  P4OUT &= ~ BIT7;                          //P4.7输出低电平

  P3SEL |= BIT3+BIT4;                       // P3.3,4 = USCI_A0 TXD/RXD
  UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 9;                              // 1MHz 115200 (see Users Guide)
  UCA0BR1 = 0;                              // 1MHz 115200
  UCA0MCTL |= UCBRS_1 + UCBRF_0;            // Modulation UCBRSx=1, UCBRFx=0
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
  __no_operation();                         // For debugger
}

// Echo back RXed character, confirm TX buffer is ready first
#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
{
          
   

    while (!(UCA0IFG&UCTXIFG));  // USCI_A0 TX buffer ready?
    //UCA0TXBUF = UCA0RXBUF;       // TX -> RXed character
    switch(UCA0RXBUF)            //判断接收的数据
    {
          
   
      case1:P1OUT |= BIT0;     //打开LED1
              P4OUT &= ~ BIT7;   //关闭LED2
              sendstring("LED1 on
");
              sendstring("LED2 off
");
      break;

      case2:
              P4OUT |= BIT7;     //打开LED2
              P1OUT &= ~ BIT0;   //关闭LED1
              sendstring("LED1 off
");
              sendstring("LED2 on
");
      break;

      case3:P1OUT |= BIT0;     //打开LED1
              P4OUT |= BIT7;     //打开LED2
              sendstring("LED1 on
");
              sendstring("LED2 on
");
      break;
      case4:

              P1OUT &= ~ BIT0;   //关闭LED1
              P4OUT &= ~ BIT7;   //关闭LED2
              sendstring("LED1 off
");
              sendstring("LED2 off
");
      break;
      default: P1OUT &= ~ BIT0;
               P4OUT &= ~ BIT7;
      break;

  }
}
经验分享 程序员 微信小程序 职场和发展