TI中文支持网
TI专业的中文技术问题搜集分享网站

关于MSP430F1611的UART通讯问题

PC机与MSP430F1611通讯,430用外部8兆晶振作UART时钟,波特率9600bps,利用中断接收PC机来的数据,主函数就是while(1);等待中断。用串口调试助手用手动发送调试,430接收出现以下问题:430接收数据只能接收一次,但是第一次手动发送430可以接收多个字节,第二次手动发送430接收不了任何数据。但是如果我在接收中断程序中加入发送程序,则可以顺利发送,百思不得其解?

附上程序代码:

这是初始化的:

void UART_init()

{

 U0CTL=SWRST;

 U0CTL|=CHAR;

 U0TCTL|=SSEL1;  //use SMCLK

 U0BR0=0x41;

 U0BR1=0x03;

 U0MCTL=0x07;  //baud 9600bps

 ME1|=URXE0+UTXE0;

 U0CTL&=~SWRST;

 IE1|=URXIE0;

 P3SEL|=BIT4+BIT5;

 P3DIR|=BIT4;

 _EINT();

}

这是接收通讯中断程序的:

#pragma vector=USART0RX_VECTOR

__interrupt void rev()

{

 test[addr]=RXBUF0; //用一个全局的数组存放接收数据

 UART_transmit(test[addr]);//不调用发送函数只能接收一次数据!!!

 addr++;

}

这是发送程序:

void UART_transmit(unsigned char dat)

{

 while (!(IFG1&UTXIFG0));

 TXBUF0=dat;

}

主函数就关看门狗等中断

Peter_Zheng:

不调用发送程序就是少了 while (!(IFG1&UTXIFG0));

赞(0)
未经允许不得转载:TI中文支持网 » 关于MSP430F1611的UART通讯问题
分享到: 更多 (0)