2016-04-12 3 views
0

Использование встроенного программирования MSP430F6736A. Код, написанный в Code Composer Studio.MSP430 UART принимает строку

Я хочу отправить некоторую строку, например, номер (26), а затем отправить ее обратно на экран на ПК. Теперь я получаю только странных заклинателей. Что мне следует улучшить?

int main(void) { 

    WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer 

    P2SEL |= BIT2 + BIT3; 

    UCA2CTLW0 |= UCSWRST; // 
    UCA2CTLW0 |= UCSSEL_1 ; // ACLK 

    UCA2BR0 = 0x1B; // 1200 Baud 32768/1200 = 27 0x1B 
    UCA2BR1 = 0x00; // 1200 Baud 
    UCA2MCTLW |= 0x94; 

    UCA2CTLW0 &= ~UCSWRST; // 

    UCA2IE |= UCRXIE; 
    UCA2IFG = 0; 

    __bis_SR_register(GIE); 

} 

#pragma vector=USCI_A2_VECTOR 
__interrupt void Recieve_ISR(void) 
{ 
    static char sprava[] = {""}; 
    int j = 0; 
    int i = 0; 

    for (i = 0 ; i < sizeof sprava; i++) 
    { 
     sprava[i] = UCA2RXBUF; 

    } 

    UCA2TXBUF = UCA2RXBUF; 
     for (j = 0 ; j < sizeof sprava+1; j++) 
     { 
      UCA2TXBUF = sprava[j]; 
     } 


} 

ответ

0
  • Не использовать магические числа как 0x94; они делают код нечитаемым. Вместо этого используйте соответствующие символы.
  • Во встроенной прошивке вы не можете вернуться с main(). Вы должны запустить цикл или спать.
  • Прерывание возникает, когда имеется один принятый байт. Обработчик прерываний не должен пытаться читать несколько байтов.
  • TXBUF может быть записан только тогда, когда буфер передачи пуст. Вы должны дождаться этого до каждого байта.