[求助] 在IQmath中,函数long _IQint( _iq A)和_iq _IQfrac( _iq A)问题

hytz845   2013-7-29 16:18 楼主
long _IQint( _iq A)和_iq _IQfrac( _iq A) ,当A为负数时,得到的结果和手册讲得不对,如下的代码,请问是我下面写的程序有问题吗

_iq Y0 = _IQ(2.3456);  
_iq Y1 = _IQ(-2.3456);  
long Y0int, Y1int;  
_iq Y0frac, Y1frac;

Y0int  = _IQint(Y0);   // Y0int = 2  
Y1int  = _IQint(Y1);   // Y1int = -2  
Y0frac = _IQfrac(Y0);   // Y0frac = 0.3456  
Y1frac = _IQfrac(Y1);   // Y1frac = -0.3456

GUI_DispFloatFix (Y0int,9,4);GUI_DispString("\n");//显示为0002.000
GUI_DispFloatFix (Y1int,9,4);GUI_DispString("\n");//显示为-003.000
GUI_DispFloatFix (_IQtoF(Y0frac),9,4);GUI_DispString("\n");//显示为0000.3456
GUI_DispFloatFix (_IQtoF(Y1frac),9,4);GUI_DispString("\n");//显示为0000.6544

回复评论 (10)

在彩屏上显示的结果
  • WP_000740.jpg
点赞  2013-7-29 16:19
需要看你调用函数的说明,这样看不出问题。负数是否有什么特别要求?
我的博客
点赞  2013-7-29 17:21

回复 楼主hytz845 的帖子

可以参考一下 http://e2e.ti.com/support/microc ... f/471/t/176794.aspx
你用的什么 MCU ?
看能否仿真看一下实际的值.
对于负数也许又要特别的处理.
点赞  2013-7-29 17:28

回复 4楼Study_Stellaris 的帖子

用MCU是stm32f103vet6,跑的是手册上给的一个例子,我的显示部分我都测试过的,没有问题
点赞  2013-7-29 18:07

回复 4楼Study_Stellaris 的帖子

我跑了一下,你给的那ti链接上的例子,也同样遇到他的问题
点赞  2013-7-29 18:30

回复 板凳zhaojun_xf 的帖子

我试的这个例子是手册上讲的,可是我得到的结果和手册上讲的不一样
点赞  2013-7-29 18:42

回复 5楼hytz845 的帖子

你看的是什么手册,能否分享一下
STM32F103 没有 FPU ,会不会在用 IQmath 之前要进行一些配置,我还没有用过 IQmath.

[ 本帖最后由 Study_Stellaris 于 2013-7-30 09:06 编辑 ]
点赞  2013-7-30 09:04
这个是C2000对IQmath的文档,M3也有,写的差不多,IQmath具体文件可以到ti官网下载
点赞  2013-7-30 09:33

回复 8楼Study_Stellaris 的帖子

看你好像在学TI的M3,这个是不是不好学啊
点赞  2013-7-30 09:38

回复 10楼hytz845 的帖子

我现在在用 STM32F103 做项目,之前用过很长一段时间 TI M3 .
感觉 TI 的 M3 比 STM32 好用.
点赞  2013-7-30 09:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复