最近被_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;
/***************************/
问题1:这里定义的x、m、y是_IQ24格式的吗?
问题2:ADC结果寄存器里面的值为ADCRESULT,为16位无符号整型,范围为0-4095,上述代码中的x=ADCRESULT/2^24、ADCRESULT*2^24还是就直接等于ADCRESULT?为啥要(_iq)强制转换?
问题3:对于float型强制转换为_iq型,假如有float a=5.1; 那么(_iq) a是为5.1呢还是5.1*2^24?