xxxxxpp

  • 2024-11-27
  • 回复了主题帖: 使用串口调试助手不能回显数据,但是能控制灯的状态

     

  • 发表了主题帖: 使用串口调试助手不能回显数据,但是能控制灯的状态

    使用的是MSP430F2618的芯片和MSP-TS430PM64的开发板,写了一个使串口能够控制LED灯并且对输入的数字进行回显,使用串口调试助手输入0和1能正常控制灯,就是不能接收到数字,求助求助大神啊来帮帮,搞了好几天都没解决,已经要崩溃了。 下面是代码: #include <msp430.h> void main(void) {     WDTCTL = WDTPW + WDTHOLD;          // 停止看门狗定时器     // 初始化 DCO 为 1 MHz     BCSCTL1 = CALBC1_1MHZ;     DCOCTL = CALDCO_1MHZ;     // 配置 LED     P1DIR |= BIT0;                      // 设置 P1.0 为输出模式     P1OUT &= ~BIT0;                     // 初始化 LED 为关闭状态     // 配置串口     P3SEL |= 0x30;                      // 设置 P3.4 和 P3.5 为 USCI_A0 的 TX 和 RX 引脚     UCA0CTL1 |= UCSSEL_2;               // 使用 SMCLK 作为时钟源     UCA0BR0 = 104;                      // 设置波特率为 9600,SMCLK = 1 MHz     UCA0BR1 = 0;     UCA0MCTL = UCBRS0;                  // 设置调制     UCA0CTL1 &= ~UCSWRST;               // 初始化 USCI 状态机     IFG2 &= ~UCA0RXIFG;                 // 清除 RX 中断标志位     IE2 |= UCA0RXIE;                    // 启用 RX 中断     __delay_cycles(1000000);            // 等待系统稳定(1 秒)     __bis_SR_register(CPUOFF + GIE);    // 进入低功耗模式,启用中断     while (1);                          // 无限循环,保持程序运行 } // USCI_A0 RX 中断服务例程 #pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) {     unsigned char receivedChar = UCA0RXBUF;  // 获取接收到的字符     if (receivedChar == '1') {         P1OUT |= BIT0;  // 点亮 LED     } else if (receivedChar == '0') {         P1OUT &= ~BIT0; // 关闭 LED     }     while (!(IFG2 & UCA0TXIFG));        // 等待 TX 缓冲区准备好     UCA0TXBUF = receivedChar;           // 回显接收到的字符 }  

最近访客

现在还没有访客

< 1/0 >

统计信息

已有--人来访过

  • 芯积分:20
  • 好友:--
  • 主题:1
  • 回复:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言