|
最近被_iq弄得有点迷糊,还求前辈指点指点。有如下代码:#ifndef GLOBAL_Q
#define GLOBAL_Q 24
#endif
#define OFFSET (_IQ12(0.05))
_iq x;
_iq m;
_iq y;
x =(_iq)ADC_readResult(...); //ADC_readResult返回uint_least16_t型,为ADC结果寄存器里面的值
m = _IQ12mpy(x, OFFSET);
y = x-m;
/***************************/
记ADC结果寄存器里面的值为ADCRESULT,16位无符号整型,范围为0-4095;
则上述代码中的x=ADCRESULT/2^24,这个对吗?还是说x就直接等于ADCRESULT?(_iq)强制转换是怎么转换的?
m = _IQ12mpy(x, OFFSET); 这个该怎么计算,x还要转换成_IQ12格式吗?有点晕。。。。结果是m=ADCRESULT*0.05吗?
|
|