g2553,在调试串口的时候遇到一个棘手的问题,一时不能解决,下面是我写的测试串口的小程序: #include <msp430g2553.h>
intcount=0; int redata[10]; int flag=0;
#pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) { redata[count++]=UCA0RXBUF; flag=1; }
void main() { P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD UCA0CTL1 |= UCSSEL_1; // CLK = ACLK ACLK默认外部32K晶振 UCA0BR0 = 0x03; // 32kHz/9600 = 3.41 32k/19200=1.66667 UCA0BR1 = 0; // UCA0MCTL = UCBRS1 + UCBRS0; // Modulation UCBRSx = 3 UCA0CTL1 &= ~UCSWRST; // **Initialize USCI statemachine** IE2|= UCA0RXIE; //Enable USCI_A0 RX interrupt _EINT(); while(1) { if(count==9) { for(count=0;count<10;count++) { while (!(IFG2&UCA0TXIFG)); UCA0TXBUF=redata[count]; } } } }
第一次进入中断是时候,发现我发送的字母A收到了。
当跳出接收中断,数组的值一两个变量flag,count都没变。 可是当再次发送一个字符,第二次进入中断的时候,数组和两个变量都变成0了,非常困惑。 |