我想将 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/