2016-04-12 21 views
0

MSP430F6736A yerleşik programlamayı kullanma. Code Composer Studio'da yazılmış kod.MSP430 UART bir dizi alma

Örneğin bir miktar (26) bir dizi dizgi göndermek ve daha sonra ekranda tekrar PC'ye göndermek istiyorum. Şimdi, sadece garip charracters alıyorum. Ne geliştirmeliyim?

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]; 
     } 


} 

cevap

0
  • 0x94 gibi sihirli sayılar kullanmayın; Kodu okunamaz hale getirirler. Bunun yerine uygun sembolleri kullanın.
  • Gömülü bir yerleşik yazılımda, main()'dan geri dönemezsiniz. Bir döngü çalıştırmalı ya da uyumaya devam etmelisin.
  • Alınan tek bir bayt mevcut olduğunda kesme gerçekleşir. Kesme işleyicisi birden çok bayt okumayı denememelidir.
  • TXBUF, yalnızca aktarım arabelleği boşken yazılabilir. Her bayttan önce bunu beklemek zorundasın.