3

const char バッファと char 配列を使用した USARt への書き込みに問題があります。

これが私のUART書き込み機能です:

unsigned int USART_Send(  unsigned char *p_pucData, 
                              unsigned int p_unLen)
{


  AT91C_BASE_US2->US_TPR = (unsigned int)p_pucData;
  AT91C_BASE_US2->US_TCR =  p_unLen;
  AT91C_BASE_US2->US_PTCR = AT91C_PDC_TXTEN;


  while((AT91C_BASE_US2->US_CSR & ((0x1 << 11) | (0x1 << 4) ) ) == 0);

   AT91C_BASE_US2->US_PTCR = AT91C_PDC_TXTDIS;

    return p_unLen;    
}

以下のように const char* を操作する関数:

USART_Send("IsitDone?",9);   //Working

以下のような配列バッファを使用すると、ガベージ文字が表示されます。なぜですか?

 unsigned char arr[10];
  memcpy(arr, "HelloWorld", 10);
  USART_Send(arr, sizeof(arr));  //Not working properly displaying Garbage chars
4

1 に答える 1