我对 atoi() 函数有一些疑问。我正在尝试将从 HAL_UART_Receive_IT 函数接收到的字符串数据转换为整数,然后再次发送到终端。出口处的东西看起来像垃圾
这是我的代码的一部分
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获取整数?
此行将变量 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
“地址”运算符。