Чтение ненулевого завершенного ввода в последовательном? - PullRequest
0 голосов
/ 31 января 2019

Я работаю с mbed, LPC1768.Последовательный ввод в mbed представляет собой массив символов без знака, который не заканчивается нулем.Я ничего не получаю с getc (), как получить ввод?

1 Ответ

0 голосов
/ 08 мая 2019

нулевой символ равен 0, поэтому, если вам нужно получить его, вы можете использовать счетчик буфера или переменную ovf для обнаружения полученного символа !! Сконфигурируйте ваш UART0,1 с помощью этого параметра: комментарий UART0 или UART1если не используете его!

, чтобы вы могли выбрать UART с помощью #define in: option-> C / C ++ -> Define: __ UART0 или __UART1

void SER_Init (void) {
#ifdef __UART0                             /* UART0 */
  LPC_SC->PCONP |= ((1 << 3) | (1 << 15)); /* enable power to UART0 & IOCON   */

  LPC_PINCON->PINSEL0 |=  (1 << 4);        /* Pin P0.2 used as TXD0           */
  LPC_PINCON->PINSEL0 |=  (1 << 6);        /* Pin P0.3 used as RXD0           */
#else                                      /* UART1 */
  LPC_SC->PCONP |= ((1 << 4) | (1 << 15)); /* enable power to UART1 & IOCON   */

  LPC_PINCON->PINSEL4 |=  (2 << 0);        /* Pin P2.0 used as TXD1           */
  LPC_PINCON->PINSEL4 |=  (2 << 2);        /* Pin P2.1 used as RXD1           */
#endif

  UART->LCR    = 0x83;                     /* 8 bits, no Parity, 1 Stop bit   */
  UART->DLL    = 9;                        /* 115200 Baud Rate @ 25.0 MHZ PCLK*/
  UART->FDR    = 0x21;                     /* FR 1,507, DIVADDVAL=1, MULVAL=2 */
  UART->DLM    = 0;                        /* High divisor latch = 0          */
  UART->LCR    = 0x03;                     /* DLAB = 0                        */
}

------>и использовать эту функцию.для получения персонажа:

/*----------------------------------------------------------------------------
  Read character from Serial Port   (blocking read)
 *----------------------------------------------------------------------------*/
int SER_GetChar (void) {

  while (!(UART0->LSR & 0x01));
  return (UART0->RBR);
}
...