我目前使用的是STC32g的实验箱9.6,我在使用ADC测量内部基准电源,然后调取CHIPID7和CHIPID8的值,最后在中断里运算
以下是我的函数
- void ADC_Routine(void) interrupt 5
- {
- ADC_FLAG = 0;
- adc_1s = 0;
- adc_r = (ADC_RES * 256) + ADC_RESL;
- vcc = (int)(4096 * VREFH / adc_r);
- }
复制代码
在这,没法正确读出数据,当我把vcc = (int)(4096 * VREFH / adc_r);改成vcc = (int)(41 * VREFH / adc_r);之后,就能正确读出数据,不过就是相当于要读出的是2526的,经过这样后,只能读出25.26,int后变成25,虽然不影响使用,但还是有点遗憾
我的判断是,数据溢出了,4096 * VREFH(CHIPID7和CHIPID8的值)的值是1185,4096*1185=4853760,换成二进制就是010010100001000000000000,我估计是到这一步,但我又对程序进行了改动,改成vcc = (int)(4096 * (VREFH / adc_r));,让他先计算VREFH / adc_r这个,这个的结果是0.616866。。。,然后再进行乘4096,依旧是没法正确读出数据
希望来个大神指导指导,还是说,这个得用查询法
对了,加.\STC32_MDU32_V1.1.LIB模块,和不加.\STC32_MDU32_V1.1.LIB的情况我都试过,还是一样
|