首页 文章

将PuTTY数据导入MSP430

提问于
浏览
0

我试图通过PuTTY将两个MSP430编程为本质上即时消息,但无法弄清楚如何在没有调试器的情况下将类型信息输入MSP430 . 我正在使用CCS,它是MSP430 F2274 . 我有一个程序,用户在一个MSP430上的按钮上输入莫尔斯电码,通过以下方法成功地从另一个MSP430输出到PuTTY .

void displayString(char array[], char size) {
    WDTCTL = WDTPW + WDTHOLD;            // Disable WDT
    DCOCTL = CALDCO_8MHZ;                // Load 8MHz constants
    BCSCTL1 = CALBC1_8MHZ;               //
    P3SEL |= 0x30;                       // P3.4,5 = USCI_A0 TXD/RXD
    UCA0CTL1 |= UCSSEL_2;                // SMCLK
    UCA0BR0 = 0x41;                      // 8MHz 9600
    UCA0BR1 = 0x03;                      // 8MHz 9600
    UCA0MCTL = UCBRS1;                   // Modulation UCBRSx = 2
    UCA0CTL1 &= ~UCSWRST;                // **Initialize USCI state

  int count;
  for(count=0; count<size; count++){
    while (!(IFG2&UCA0TXIFG));              // USCI_A0 TX buffer ready?
    UCA0TXBUF = array[count];               // TX -> RXed character
  }
}

有人可以使用类似的设置发送反向(在MSP430上键入信息)的代码吗?谢谢 .

2 回答

  • 0

    我使用了picocom:

    $ picocom -r -b 9600 /dev/ttySxxxx
    

    UART初始化代码:

    void uart_setup()
    {
      // Configure UART pins
      P2SEL1 |= BIT0 + BIT1;
      P2SEL0 &= ~(BIT0 + BIT1);
    
      // Configure UART 0
      UCA0CTL1 |= UCSWRST; // perform reset
      UCA0CTL1 = UCSSEL_1;                      // Set ACLK = 32768 as UCBRCLK
      UCA0BR0 = 3;                              // 9600 baud
      UCA0BR1 = 0; 
      UCA0MCTLW |= 0x5300;                      // 32768/9600 - INT(32768/9600)=0.41
                                                // UCBRSx value = 0x53 (See UG)
      UCA0CTL1 &= ~UCSWRST;                     // release from reset
      //UCA0IE |= UCRXIE;                         // Enable RX interrupt
    }
    

    覆盖putchar():

    int putchar(int c)
    {
      if (c == '\n') putchar('\r');
      while (!(UCA0IFG & UCTXIFG));
      UCA0TXBUF = c;
      return 0;
    }
    

    然后,您可以简单地调用printf(...)将文本从MSP430输出到串行端口 .

  • 0

    如果你仍想留下 putchar()prtinf() 用于调试 - 打印到调试器的调试窗口,那么你可以有单独的 read 函数:

    unsigned char ReadByteUCA_UART(void)    
    {   
        //while ((IFG2&UCA0RXIFG)==0);  // wait for RX buffer (full)   
        while(UCA0STAT&UCBUSY);   
        return (UCA0RXBUF);   
    }
    

相关问题