ZXLRHL 发表于 2013-6-27 10:40

关于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


ZXLRHL 发表于 2013-6-27 10:57

我刚在观察WATCH窗口时发现,LspClk变量虽然我定义的是_IQ5,D但是它在显示long型时为480000000,在_IQ5的范围之外,我就又把变量以及计算函数全部设置成_IQ2,结果就正确了,虽然计算结果是对了,但是还是不知道原因,有大神清楚的吗?麻烦讲解下啊,谢谢!

zhangmangui 发表于 2013-6-27 12:24

ZXLRHL 发表于 2013-6-27 10:57 static/image/common/back.gif
我刚在观察WATCH窗口时发现,LspClk变量虽然我定义的是_IQ5,D但是它在显示long型时为480000000,在_IQ5的 ...

应该还是范围问题吧看看下面的范围


独孤求败2030 发表于 2013-7-16 12:46

楼上所言甚是
页: [1]
查看完整版本: 关于DSP的IQmath函数的使用