msp430F2274使用串口通讯设置
1、MSP430F2274单片机串口的P3.4 P3.5可以设置为标准串口。发现和MSP430F123,MSP430F149都不一样,在研究了相关手册资料后,实现自发自收。

2、首先新建一个工程,做一些基本设置
1) FETDebugger -->setup-->connection选择 USB连接方式
2)Debugger下的-->setuo-->Driver 选 FET Debugger
3) General Options -->Target --> Device -->点按钮选 MSP430F2274



3、管脚定义:
因为P3口没有中断要通过P3SEL和P3DIR设置后RX,TX才能生效。
P3.4 P3.5 提供了一组标准的USRT0的通讯接口。
P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD

4、晶振 设置。
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;
..................

5、波特率的设置也是比较有特点:
1MHz/9600 = ~104.2
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt

6、编写响应代码:
当收到串口数据时,进入响应函数,然后把RX缓存数据直接放到TX缓冲,实现数据的自发自收。
这里注意 : 用的是IFG2
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = UCA0RXBUF; // TX -> RXed character
}

7、代码编写完成后,IAR通过USB'烧写器 写入芯片。
打开串口精灵,设好波特率和串口号,发送数据给串口,如果能够收到同样数据的响应,说明OK。
