关于DSP的IQmath函数的使用

[复制链接]
2742|3
 楼主| ZXLRHL 发表于 2013-6-27 10:40 | 显示全部楼层 |阅读模式
我基本把IQmath函数的计数文档全部了解完了,应用了一些函数计算也正确。今天在使用的时候,除法运算计算结果不正确,各位大神麻烦指点啊,谢谢!

  _iq5  Baud_Dem = 0;
  _iq5  LspClk = 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
我刚在观察WATCH窗口时发现,LspClk变量虽然我定义的是_IQ5,D但是它在显示long型时为480000000,在_IQ5的 ...

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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
独孤求败2030 发表于 2013-7-16 12:46 | 显示全部楼层
楼上所言甚是
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:生活累,一小半源于生存,一小半源于攀比。

28

主题

100

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部