This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

【MSP430 LaunchPad设计心得】+ TimerA实现 uart串口和我的上位机

Launch pad TimerA实现 uart串口
前段时间看到了TI公司的培训launchpad的视频,感觉受益匪浅。也学到Value line系列的微处理器的强大功能。收到launch pad后,不知道从什么地方开始入手了?感觉应该先调试一下串口不错,看到过用别人用定时器A来实现了串口的实现,所以就学习了一下串口的协议。
1、  首先实现波特率的实现。我们采用1M的时钟来实现波特率的发送,也就是定时器需要每1000000/9600 来中断一次才能满足波特率为9600的传输速率。
#define UART_TBIT_DIV_2     (1000000 / (9600 * 2))
#define UART_TBIT           (1000000 / 9600)
2、  数据的发送是通过每UART_TBIT个时钟周期,来发送一次数据。我设置的数据位为一个起始信号+八位数据+一个终止信号。
while (TACCTL0 & CCIE);                
 TACCR0 = TAR;                        
    TACCR0 += UART_TBIT;                    
    txData = byte;                        
    txData |= 0x100;                       
    txData <<= 1;                           t
TACCTL0 = OUTMOD0 + CCIE;  
3、  数据的发送过程是在定时器中断中进行的。
   if ( BitCnt == 0)
    CCTL0 &= ~ CCIE;                     如果发送完成,则关闭定时器
    else
    {
      CCTL0 |=  OUTMOD2;                  
      if (RXTXData & 0x01)
      CCTL0 &= ~ OUTMOD2;             如果数据为高 ,则是端口设置1
      RXTXData = RXTXData >> 1;
      BitCnt --;                                               数据位减1.
    }
其他的功能设置为下:
  DCOCTL = 0x00;                          启动 DCOCLK
  BCSCTL1 = CALBC1_1MHZ;
  DCOCTL = CALDCO_1MHZ;
  BCSCTL2 &= ~DIVS_3;                     设置SMclk1Mhz
 
  P1SEL |= UART_TXD + UART_RXD;            /
  P1DIR |= UART_TXD;                        使用的是P1.5管脚
  P1DIR &= ~UART_RXD;
 
  TACCTL0 = OUT;                         
  TACCTL1 = SCS + CM1 + CAP + CCIE;      
  TACTL |= TACLR;                          
  TACTL = TASSEL_2 + MC_2;              
  timerA_UART_mode = 1;
 
为了测试能够正确使用launchpad的串口,我编写了下面的上位机程序。我使用launchpad发送 123 到上位机。哈哈,数据是正确的。