atoi() 函数将垃圾返回到终端 STM32,C lang

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

我对 atoi() 函数有一些疑问。我正在尝试将从 HAL_UART_Receive_IT 函数接收到的字符串数据转换为整数,然后再次发送到终端。出口处的东西看起来像垃圾
enter image description here

这是我的代码的一部分

uint8_t UART_Rx_Data;
----------------------
while (1){
  HAL_UART_Receive_IT(&huart2, (uint8_t*)&UART_Rx_Data, sizeof(UART_Rx_Data));
}
----------------------
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
  if (huart == &huart2){
    int i = atoi((char *)&UART_Rx_Data);
    HAL_UART_Transmit_IT(&huart2, (uint8_t *)i, sizeof(i));
  }
}

如何从UART_Rx_Data获取整数?

c stm32 uart hal atoi
1个回答
0
投票

此行将变量 i

value
转换为 address 传递给函数
HAL_UART_Transmit_IT()
,而不是 i 中包含的 value
address

HAL_UART_Transmit_IT(&huart2, (uint8_t *)i, sizeof(i));

根据我发现的HAL_UART_Transmit_IT()

的文档

...

参数:

huart pointer to a UART_HandleTypeDef structure that contains the configuration information for the specified UART module. pData Pointer to data buffer Size Amount of data to be sent

第二个参数 - 文档中的

pData

 - 是指向要发送的数据(或其地址)的指针。

这将与该文档匹配:

HAL_UART_Transmit_IT(&huart2, (uint8_t *) &i, sizeof(i));
注意在 

&

 中添加了 
i
“地址”运算符。

© www.soinside.com 2019 - 2024. All rights reserved.