请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F5528 您好!
我请求帮助解决以下问题: 我将字符从终端程序(PuTTY)提交到 UART 接收器的输入、在 RX 中断中、我将接收到的符号放入发送缓冲区、但我无法正确接收超过 ASCII 表符号一半的数据、而不是接收到0xFF 的符号。 UART 启动后、我会看到正确的测试消息、因此我怀疑 TX 部件工作正常。 第二个问题是 UART 开始发送符号、而不等待接收结束 随附了逻辑分析仪的代码和屏幕截图。
如果这个问题得到解决,我将不胜感激。
代码
// Init UART static void MSP430_UART_init () {
//将 USCI 状态机复位 UCA1CTL1 |= UCSWRST; // P4.4、5 = USCI_A1 TXD/RXD P4SEL |= BIT4 | BI5; UCA1CTL1 |= UCSSEL1; UCA1BR0 = 34;// 115200 UCA1BR1 = 0;= UCB1CTL |= 0 ;/ UCA1BR1 > 6 //使 USCI 状态机退出复位 UCA1CTL1 &=~UCSWRST; //启用 RX 中断。 UCA1IE |= UCRXIE; PUS_U1 ("hello!\r\n");//看到这是正确 的} //中断处理程序 #pragma vector = USCI_A1_vector __interrupt void USCI_A1_ISR (void) { volatile uint8_t symbol; switch (__evo_in_range (UCA1IV、4)) { 情况0:中断; //向量0 -无中断 案例2: //向量2 - RXIFG 符号= UCA1RXBUF; putchar_U1 (符号); 中断; 案例4: //向量4 - TXIFG 中断; 默认值:break; } } //发送调试信息 //将字符发送到 UART1 void putchar_U1 (uint8_t ch) { while (!(UCA1IFG & UCTXIFG)){;} UCA1TXBUF = ch; } //将字符串发送到 UART1 void puts_U1 (uint8_t * str) { while (* str) { putchar_U1 (* str++); } }

