芯片型号是MSP430 G2553
是TI launchpad
我的程序如下
#include<msp430g2553.h>
unsigned int i;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
UCA0CTL1|=UCSWRST;
UCA0CTL0&=~UC7BIT;//字符长度为8
UCA0CTL1|=UCSSEL_2;//选择系统时钟
UCA0BR0=0x6D; //波特率为9600
UCA0BR1=0;
UCA0MCTL=0;//UCA0MCTL=UCBRS0;
IE2 |= 0x03;//开接收使能
UCA0CTL1&=~UCSWRST;
P1SEL|=BIT1+BIT2; //将P1.1 P1.2设为第二功能
P1SEL2|=BIT1+BIT2;
_BIS_SR(GIE);
while(1)
{
UCA0TXBUF = 0x11;
i=10000;
while(i--);
}
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void usart0_rx (void)
{
while (!(IFG2 & UCA0RXIFG)); // USART0 TX buffer ready?
UCA0TXBUF = UCA0RXBUF; // RXBUF0 to TXBUF0
}
程序目的是单片机通过串口持续向PC发送数据,PC一旦给单片机发送数据则单片机立刻回发。
现在问题是单片机能够正常发送数据,上位机能正常接收。但是单片机不能接收到PC机传回的数据。
我调试时在“ IE2 |= 0x03;//开接收使能 ” 这一句设置断点,这一句运行后IE2寄存器值没有改变。不知道问题出在哪里。在调试时PC给单片机发送数据时IFG2能正常置位。就是IE2寄存器没有修改。不知道是什么情况 |