新人问个关于串口的低级问题。。

2019-03-24 08:22发布

我刚开始接触单片机,用的msp430f5529的launchpad。我现在想用PC和开发板串口连接,板子用来烤程序的那个usb接口可以达到串口连接的作用嘛,还是要短接啥的。。。不能的话是不是只能用个usb转串口?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
fraisty
2019-03-24 16:13
  1. #include <msp430.h>

  2. int main(void)
  3. {
  4.   unsigned char i;

  5.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  6.   P3SEL = BIT3+BIT4;                        // P3.4,5 = USCI_A0 TXD/RXD
  7. //.......................
  8. //  P5SEL |= BIT4+BIT5;                       // Select XT1
  9. //
  10. //  UCSCTL6 &= ~(XT1OFF);                     // XT1 On
  11. //  UCSCTL6 |= XCAP_3;                        // Internal load cap
  12. //  UCSCTL3 = 0;                              // FLL Reference Clock = XT1
  13. //
  14. //  // Loop until XT1,XT2 & DCO stabilizes - In this case loop until XT1 and DCo settle
  15. //  do
  16. //  {
  17. //    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
  18. //                                            // Clear XT2,XT1,DCO fault flags
  19. //    SFRIFG1 &= ~OFIFG;                      // Clear fault flags
  20. //  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
  21. //  
  22. //  UCSCTL6 &= ~(XT1DRIVE_3);                 // Xtal is now stable, reduce drive strength
  23. //
  24. //  UCSCTL4 |= SELA_0 + SELS_4 + SELM_4;      // ACLK = LFTX1
  25. //                                            // SMCLK = default DCO
  26. //                                            // MCLK = default DCO
  27. //  
  28.   //................
  29.   UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  30.   UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK
  31.   UCA0BR0 = 0x03;                           // 32kHz/9600=3.41 (see User's Guide)
  32.   UCA0BR1 = 0x00;                           //
  33.   UCA0MCTL = UCBRS_3+UCBRF_0;               // Modulation UCBRSx=3, UCBRFx=0
  34.   UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  35.   UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt

  36.   __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, interrupts enabled
  37.   __no_operation();                         // For debugger
  38. }

  39. // Echo back RXed character, confirm TX buffer is ready first
  40. #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
  41. #pragma vector=USCI_A0_VECTOR
  42. __interrupt void USCI_A0_ISR(void)
  43. #elif defined(__GNUC__)
  44. void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
  45. #else
  46. #error Compiler not supported!
  47. #endif
  48. {
  49.   switch(__even_in_range(UCA0IV,4))
  50.   {
  51.   case 0:break;                             // Vector 0 - no interrupt
  52.   case 2:                                   // Vector 2 - RXIFG
  53.     while (!(UCA0IFG&UCTXIFG));             // USCI_A0 TX buffer ready?
  54.     UCA0TXBUF = UCA0RXBUF;                  // TX -> RXed character
  55.     break;
  56.   case 4:break;                             // Vector 4 - TXIFG
  57.   default: break;  
  58.   }
  59. }
复制代码

一周热门 更多>

相关问题

    相关文章