如何通过UART(嵌入式C)接收和读取用户输入

问题描述 投票:0回答:1

我正在尝试使用 AS5600 编码器对直流电机进行位置控制,并将位置作为用户通过 UART 输入的位置,但我无法这样做。如果我给出 4 位数字输入,例如 1222,则只有 ASCII 值中的“1”存储在缓冲区数组中。

我尝试创建一个数组的数组来通过 for 循环存储输入的每个数字,这些数字作为 ASCII 值存储在数组中,然后将它们转换回十进制。

  for (int j = 0; j < NUM_DIGITS; j++)
  {
    HAL_UART_Receive(&huart2, rxBuffer[i][j], 1, 1000);
    intValue = (intValue * 10) + (rxBuffer[i][j] - '0');
  }
c embedded uart receiver
1个回答
0
投票

如果

rxBuffer[i][j]
是一个二维数组,则意味着您没有阅读警告。如果是这种情况,您需要传递该元素的地址(即
(uint8_t *)&rxBuffer[i][j]

您也不检查 HAL 函数的结果。

简单的行读取功能示例(:

HAL_StatusTypeDef getString(char *buff, size_t size)
{
    size_t pos = 0;
    HAL_StatusTypeDef result;
    while(pos < size - 1 && (result = HAL_UART_Receive(huart, (uint8_t *)(buff + pos), 1)) == HAL_OK)
    {
        if(buff[pos++] == '\n') {pos--;break;}
    }
    buff[pos] = 0;
    return result;
}
© www.soinside.com 2019 - 2024. All rights reserved.