使用接收中断,将接收到的字符再发送出去。每次接收到字符之后都会退出低功耗模式,从而在主函数中将接收到的字符再发送出去。
/**********************************************
*程序描述:单片机的P3.4、P3.5作为串口接收字符,将接受到的字符再发送出去
***********************************************/
#include <msp430x14x.h>
void usartInit(void); //串口初始化
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
usartInit();
while(1){
_BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/ interrupt
while((UTCTL0&TXEPT)==0);//等待数据发送完毕
TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0
}
}
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
LPM3_EXIT;
}
/****************************************************************************
*函数名: uartInit() /
*作用 :USART0的初始化配置,使用P3.4和P3.5,使用接收中断 /
*返回值:无 /
*参数 :无 /
*****************************************************************************/
void usartInit(){
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x03; // 32k/9600 - 3.41
UBR10 = 0x00; //
UMCTL0 = 0x4A; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
IE1 |= URXIE0; // Enable USART0 RX interrupt
}