使用MounRiver Studio Ⅱ软件写一个CH592F芯片的ADC采集程序,碰到的问题
- MounRiver Studio Ⅱ 默认是不开启浮点计算的,所以有些浮点功能不能用,碰到问题是
while (1) {DelayMs (100);tmp = Read_Temperature (0);sprintf (tempBuffer, "temp:%.2f\r\n", tmp); // 格式化温度值到字符串。使用%f要开启相应的浮点运算,不然容易报错UART0_SendString (tempBuffer, strlen (tempBuffer)); // 发送温度字符串}
如果不开完整的浮点运算,这个
sprintf (tempBuffer, “temp:%.2f\r\n”, tmp);
输出的只会是“temp:”,而没有后面数据。
解决方式是勾选 Use float with nano printf(-u_printf_float)
2.遇到的第二个问题是,测量的电压值不准,原因是没有照CH592F手册给的公式计算,公式如下:
大致的流程就是先设置衰减度,然后根据相应公式计算
ADC_ExtSingleChSampInit (SampleFreq_3_2, ADC_PGA_1_2);//ADC_PGA_1_2是-6dBvoltage = ((float)adc_value / ADC_MAX-1)* VREF ;//然后更加相应公式计算,ADC_MAX是1024,VREF是1.05