我正在使用模数转换器读取 0 到 3.3V 的电压值。ADC 提供从 (0 到 4095) 的0x00
输出0x0FFF
。我想用两位小数打印电压读数。我已经阅读了许多答案,但我尝试过的都没有奏效。这是我的代码:
uint32_t pui32ADC0Value[1]; // ADC0 data value
double D0v; // Decimal value
// Read value from ADC
ADCSequenceDataGet(ADC0_BASE, 3, pui32ADC0Value);
// Convert to decimal
D0v = (double)pui32ADC0Value[0] / 4095 * 3.3;
// Print to console
UART0printf("\n\r> D0 = %.2d V", D0v);
我得到的输出是:D0 = ERROR2d V
pui32ADC0Value
打印没有任何问题并给出预期值,所以我知道它正在工作。
这个错误是什么意思?
注意:UART0printf
是我正在使用的 TIVA TM4C 微控制器上预定义的 UART 功能。
更新:我错误地假设UART0printf
它与 相同printf
,因为我之前使用过%u
,%s
和%x
. 但是对于数字,它仅支持%c
、%i
和%u
。我正在重新编写我的代码,如果我没有得到任何地方,我会更新。
更新2: 我可以做这样的事情吗?我知道它会错误地四舍五入...
uint32_t pui32ADC0Value[1]; // ADC0 data value
uint32_t D0v[2]; // Decimal value
// Read value from ADC
ADCSequenceDataGet(ADC0_BASE, 3, pui32ADC0Value);
// Convert to decimal
for ( int i = 0; i <= 2; i++){
D0v[i] = (pui32ADC0Value[0]/10^i) / 4096 * 3.3;
}
// Display the AIN0 (PE0) digital value on the console.
UART0printf("\n\r> D0 = %d.%d%d V", D0v[0],D0v[1],D0v[2]);