一、接线图
RXD->P3.4,TXD->P3.3
二、串口的发送和接收
#include <msp430.h>
/**
* main.c
*/
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
P3SEL |= BIT3+BIT4;//P3.3,P3.4=USCI_A0 TXD/RXD
//串口的初始化
UCA0CTL1 |= UCSWRST;//模块处于复位状态
UCA0CTL1 |=UCSSEL_2;//选择时钟源SMCLK
UCA0BR0 = 8;//分频系数:1MHZ 115200
UCA0BR1 = 0;//分频系数:1MHZ 115200
UCA0MCTL |=UCBRS_6 + UCBRF_0;//调整部分:UCBRSx=6,UCBRFx=0
UCA0CTL1 &= ~UCSWRST;//启用模块
//串口接收
UCA0IE |= UCRXIE;//使能中断USCI_A0 RX
_EINT();//开启全局中断
LPM0;//进入低功耗模式
_NOP();//试调用
}
//中断服务函数
//将接收的数据重新发回
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
switch(__even_in_range(UCA0IV,4))
{
case 0:break;//无中断
//串口发送
case 2:
//等待TXBUF为空,将接收的数据读回后发出
while(!(UCA0IFG&UCTXIFG));
UCA0TXBUF=UCA0RXBUF;
break;
case 4:break;// Vector 4 - TXIFG
default:break;
}
}