首页 > 解决方案 > char C++ STM32中数组uint_t8的转换

问题描述

我使用 STM32L151CB 我有函数,它在 ttl 上获取数据uint8_t rxb[32],然后我希望它数组转换为十六进制 uint8_t AppDate[0] = rxb[0]AppDate必须是十六进制(0x13)。我有两个文件 uart_board.c 下面的代码,但AppDate在文件 main.c 中。我必须如何在我的函数中使用 return

uart_board.c

int32_t resDateLidar(void){
  uint8_t rxb[32];
  uint8_t* lidar[10];
  char* str;
  char hex_num[3] = {0};
  //HAL_UART_Receive_IT( &UartContext[uartId].UartHandle, &UartContext[uartId].RxData, 1 );
  if(HAL_UART_Receive(&UartContext[UART_1].UartHandle, &rxb, 32, 300) == HAL_OK){
    DelayMs(100);
    for (int i = 0; i < 32; i++)
      {
        if((rxb[i] == 89) && (rxb[i+1] == 89)){
          lidar[0] = rxb[i];
          lidar[1] = rxb[i + 1];
          lidar[2] = rxb[i + 2];
          lidar[3] = rxb[i + 3];
          lidar[4] = rxb[i + 4];
          lidar[5] = rxb[i + 5];
          lidar[6] = rxb[i + 6];
          lidar[7] = rxb[i + 7];
          lidar[8] = rxb[i + 8];
          lidar[9] = rxb[i + 9];
          lidar[10] = rxb[i + 10];

          //str = (char*)lidar;

        }

      }
    //HAL_UART_Transmit(&UartContext[UART_1].UartHandle, &rxb, 32, 300);
    //HAL_UART_Transmit(&UartContext[UART_1].UartHandle, &lidar, 10, 300);
    DelayMs(1000);

  }

  return lidar;
}

我有传感器激光雷达,激光雷达发送 9 个字节,我可以HAL_UART_Transmit在 ttl 上发送数据。循环过滤我的数据,只发送 9 个字节的信息而不是 32 个。我想分配AppDate[0] = lidar[0],AppDate[1] = lidar[1],AppDate[2] = lidar[2]. (例如激光雷达发送到我的 stm 89 89 194 0 13 134 13 160 55)

标签: c++stm32

解决方案


推荐阅读