c - 如何将读取 ADC 值转换为 float ?

标签 c stm32 data-conversion adc

我想将 ADC 值转换为浮点数。
这是我的代码:

uint32_t ADCValue;
char str[15];

          ADCValue = HAL_ADC_GetValue(&hadc1);
          ADCValue=ADCValue*3.3/4095;
          sprintf(str, "%d", Voltage);
          HAL_UART_Transmit(&huart2, (uint8_t*)(&str), 6, 100);
          HAL_UART_Transmit(&huart2, (uint8_t*) "\n\r", 2, 100);
          HAL_Delay(500);

我在 3.3V 时读取 4095 的值,但我正在将 3 传输到缓冲区。我想传输电压的确切值。

最佳答案

首先没有明显的理由需要在这里使用浮点数。他们不必要地缓慢。只需这样做:

uint32_t millivolts = ADCValue*3300/4095.

对于 4095 的输入,您会得到 3299mV 的结果。由于浮点数不准确,这可能比您通过浮点数得到的更准确。

关于c - 如何将读取 ADC 值转换为 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41630271/

相关文章:

c - 递归scanf死循环

c - 我如何与 Cygwin 相处融洽?

embedded - 为什么同一地址的内部Flash不能写入两次

python - 使用 PyInstaller 仅将 Python 字符串转换为 float 失败

C 数组声明语法

c++ - 是否可以使用 C/C++ 构建企业应用程序?

从阵列转换导致某些 MCU 崩溃,但不会导致其他 MCU 崩溃

ssl - STM32Cube_FW_F7 SSL 客户端 mbedTLS FATAL_ALERT

c# - 如何将字符串转换为以 null 结尾的字符串?

javascript - 如何在 JavaScript 中将字符串转换为整数