关于DSP的IQmath函数的使用
我基本把IQmath函数的计数文档全部了解完了,应用了一些函数计算也正确。今天在使用的时候,除法运算计算结果不正确,各位大神麻烦指点啊,谢谢!_iq5Baud_Dem = 0;
_iq5LspClk = 0;
LspClk = 2;
//计算波特率
if(LspClk)
{
LspClk = _IQ5div(_IQ5(60000000),_IQ5(4));//SysCtrlRegs.LOSPCP=2;//60为sysclk;
}
else
{
LspClk = _IQ5(60000000);
}
Baud_Dem = _IQ5mpy(_IQ5(Config->uBaud), _IQ5(8)); //Config->uBaud * 8;
Baud_Dem = _IQ5div(_IQ5(LspClk), _IQ5(Baud_Dem));//就是这一句结果出现问题,设置波特率4800,计算结果应该为390.6,而这一步结果为54.6
我刚在观察WATCH窗口时发现,LspClk变量虽然我定义的是_IQ5,D但是它在显示long型时为480000000,在_IQ5的范围之外,我就又把变量以及计算函数全部设置成_IQ2,结果就正确了,虽然计算结果是对了,但是还是不知道原因,有大神清楚的吗?麻烦讲解下啊,谢谢! ZXLRHL 发表于 2013-6-27 10:57 static/image/common/back.gif
我刚在观察WATCH窗口时发现,LspClk变量虽然我定义的是_IQ5,D但是它在显示long型时为480000000,在_IQ5的 ...
应该还是范围问题吧看看下面的范围
楼上所言甚是
页:
[1]