原创 MSP430F247系列操作之UART Mode学习笔记

2014-3-25 21:23 2379 11 11 分类: MCU/ 嵌入式 文集: MSP430F247系列操作

          当初本来是打算组装一个MSP430F169的芯片的,但是当时手里没有MSP430F169的芯片就装了个MSP430F247的,本来想这两个芯片应该操作都是一样的嘛,毕竟都是都是TI生产的芯片。但是当我开始用的时候我发现,这两个根本就不一样,MSP430F247对寄存器有了从新的定义。

      我刚开始学习的时候,买了一本MSP430的书籍,主要讲的是MSP430F169。我就拿着这本书对着学习MSP430F247,看着TI提供的MSP430F247的例程,这样看看了很久都没有看懂,例程和书上的操作都不一样。比如在波特率的设置上,就有很大的差别。

#include “msp430.h”

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  if (CALBC1_1MHZ==0xFF)     // If calibration constant erased
  {           
    while(1);                               // do not load, trap CPU!! 
  }
  DCOCTL = 0;                               // Select lowest DCOx and MODx settings
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;

  P3SEL = 0x30;                             // P3.4,5 = USCI_A0 TXD/RXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 6;                              // 1MHz 9600
  UCA0BR1 = 0;                              // 1MHz 9600

  UCA0MCTL = UCBRF3 + UCOS16;               // Modln UCBRSx=1, over sampling
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

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

// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
  UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
}

上面这段程序就是TI提供的,哪些有颜色的都是搞不懂的地方。。。。。

这个什么要那样写呢?蓝色的我懂,是设置波特率,但是怎么和书上写的不一样的,这就是书寄存器不一样的效果,看半天看不懂,最好我在TI提供的技术手册(附件msp430f247教程)里看到了答案(15.3.13 Typical Baud Rates and Errors),MSP430F247的波特率设置。。。。

msp430f247切图01.jpg

      图1:红框内就是需要设置的波特率包括误差

      从上面的程序可以看到:晶振选的1MHZ的,所以当设置波特率9600的时候,就要选择UCA0BR0 = 6;    UCA0BR1 = 0;值得注意的是这个程序采用的是过采样模式,使用的是UCOS16=1,当然图1也是当UCOS16=1的时候的调整。

18b20检查温度1602显示05.jpg

图2:波特率调整控制寄存器

msp430f247切图02.jpg

图3:头文件中关于UCBRF3的设置

        当时我红色的是波特率调整控制寄存器,但是我不明白为啥那样设置,通过查看头文件,我知道了UCBRF3 是在头文件里设置好了的调整参数。在图1中可以看到当晶振1MHZ,、波特率9600的时候,UCBRFx是8,所以通过头文件里定义好的,可以直接设置。

 

 

 

 

 

 

 

 

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
11
关闭 站长推荐上一条 /3 下一条