WHALEE 发表于 2025-6-10 10:00

ADC工作正常,但无法在UART上发送浮点值

程序中ADC工作正常,但无法在UART上发送浮点值。只有整数发送正常。但是当我使用sprintf函数发送浮点值时,只能发送零。程序如下

uint16_t val;float voltage=0;while{    HAL_Delay(1000);      /* USER CODE END WHILE */          HAL_ADC_Start(&hadc);          HAL_ADC_PollForConversion(&hadc, 10);val = HAL_ADC_GetValue(&hadc);
   voltage= ((val/4096)*3.3);       sprintf(p,"%1.3f ",voltage); /* For floting value displaying*/          HAL_UART_Transmit(&huart2, p, sizeof(p), 10);          HAL_ADC_Stop(&hadc);}
while{HAL_Delay(1000);      /* USER CODE END WHILE */         HAL_ADC_Start(&hadc);   HAL_ADC_PollForConversion(&hadc, 10); val = HAL_ADC_GetValue(&hadc);sprintf(p, "%d ", val);HAL_UART_Transmit(&huart2, p, sizeof(p), 10);   HAL_ADC_Stop(&hadc);}

onlycook 发表于 2025-6-10 16:16

在链接器选项中是否启用了浮点支持。

elephant00 发表于 2025-6-10 16:23

如果sprintf不可靠,可以手动实现浮点数到字符串的转换。

flycamelaaa 发表于 2025-6-10 17:00

在IAR或GCC中,检查编译选项是否启用了浮点支持。

powerantone 发表于 2025-6-10 17:56

缓冲区溢出?

stormwind123 发表于 2025-6-10 19:00

如果浮点数的值非常小或非常大,可能在格式化时被截断为零。

probedog 发表于 2025-6-10 19:00

手动转换浮点数。

classroom 发表于 2025-6-10 19:36

检查UART配置尤其是波特率、数据位、停止位和校验位。

cr315 发表于 2025-6-10 21:00

用的库是否支持浮点数格式化。

jcky001 发表于 2025-6-10 22:00

是否是浮点数格式化的问题。
页: [1]
查看完整版本: ADC工作正常,但无法在UART上发送浮点值