几个IQMATH的问题,请教一下!
1、lq10InvTemp.lData = (_IQ10mpy(g_u32ACDynamicuse, g_u32ACDynamicuse) >> 10);
上面的语句是整段程序里的一条,g_u32ACDynamicuse是左移10位之后 的数值,两个相同的数值相乘之后 ,右移了10位,是等效于
最终的结果lq10InvTemp.lData左移了10位么?另,相乘之后,是否需要考虑结果超过IQ10的范围呢?
2、#define IQ10_OVPFC_ADC_FACTOR ((INT32)13653) // 1/5.12019/15 <<20 = 13653
lCalTemp.lData = _IQ10mpy(s_i32AdcSumPfcOVp,IQ10_OVPFC_ADC_FACTOR);
请问以上语句,s_i32AdcSumPfcOVp的数值范围在0~4096之间 如果用 _IQ10mpy格式,与IQ10_OVPFC_ADC_FACTOR相乘,结果已经非常大了,是不是已经超出IQ10的范围了,这个处理过程是怎么样的呢?谢谢