zoukankan      html  css  js  c++  java
  • [LaunchPad] 串口测试

      1 #include  "msp430g2553.h"
      2 #include  "stdio.h"
      3 
      4 
      5 unsigned char RxBuf[256]="haha";
      6 unsigned char RxFlag;
      7 unsigned char RxPoint;
      8 
      9 
     10 int putchar(int ch)
     11 {
     12   while(!(IFG2&UCA0TXIFG));
     13    UCA0TXBUF=ch;
     14    return ch;
     15 }
     16 
     17 
     18  void sendChar(unsigned char c)
     19  {
     20    while(!(IFG2&UCA0TXIFG));
     21    UCA0TXBUF=c;
     22  }
     23 
     24  void sendStr(unsigned char *s)
     25  {
     26        while(*s!='\0')
     27        {
     28                sendChar(*s);
     29                s++;
     30        }
     31  }
     32  
     33  void main(void)
     34  
     35  {
     36  
     37  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
     38  
     39   BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
     40   DCOCTL = CALDCO_1MHZ;
     41   BCSCTL2 &= ~(DIVS_3);
     42  
     43  
     44   P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
     45   P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
     46  
     47   UCA0CTL1 |= UCSSEL_2;                     // SMCLK
     48   UCA0BR0 = 104;                            // 1MHz 9600
     49   UCA0BR1 = 0;                              // 1MHz 9600
     50   UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
     51   UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
     52  
     53   IE2 |= UCA0RXIE;   // Enable USCI_A0 RX interrupt
     54   
     55   
     56   RxFlag=0; 
     57   RxPoint=0;
     58   _EINT();
     59   
     60  
     61  printf("\n%s\n","========串口测试=========");
     62 
     63  //__bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
     64  
     65  
     66   while(1)
     67   {
     68   __delay_cycles(1000000);
     69  if(RxFlag == 0)
     70   printf("%s\n",RxBuf); 
     71   }
     72   
     73   
     74  }
     75  
     76  //  Echo back RXed character, confirm TX buffer is ready first
     77  
     78  #pragma vector=USCIAB0RX_VECTOR
     79  __interrupt void USCI0RX_ISR(void)
     80  {
     81 
     82 
     83   while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
     84  
     85   if(RxFlag == 0)
     86   {
     87     RxFlag = 1;
     88     RxBuf[RxPoint] = UCA0RXBUF;
     89      RxPoint++;
     90   }
     91   else
     92   {
     93      if(UCA0RXBUF=='*')
     94     {
     95       putchar('$');
     96       RxBuf[RxPoint]='\0';
     97       RxFlag = 0;
     98       RxPoint = 0;
     99     }
    100     else
    101     {
    102         RxBuf[RxPoint] = UCA0RXBUF;
    103         RxPoint++;
    104     }
    105   }
    106  
    107  }


    HW模式,RxFlag=0,表示接收完毕,=1为正在接收,实现printf函数

  • 相关阅读:
    判断一下是星期几
    猴子分桃
    免子生免子
    字符串排序
    非关系型数据库(一)
    学习redis简介(一)
    SAVEPOINT
    *****POSTGRESQL文檔
    程序员人生之路(分析的非常透彻!)
    UpperCase for ALL Text Editors
  • 原文地址:https://www.cnblogs.com/sky1991/p/2653648.html
Copyright © 2011-2022 走看看