你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32的浮点除法运算偶尔出错

[复制链接]
ewindiy 提问时间:2016-2-1 14:42 /
本帖最后由 ewindiy 于 2016-2-1 14:47 编辑

最近做了个以太网步进电机控制器,一切都那么顺利的时候,测试中发现一个让我十分苦恼的问题
做除法的时候大部分结果是对的,偶尔出现结果为0,虽然使用整数除法越过这个问题,但是始终不明白怎么回事如图,查询中有个别结果有问题,就做了个除法,结果让我不解
未命名-1.jpg
未命名-2.jpg
未命名-3.jpg

收藏 评论5 发布时间:2016-2-1 14:42

举报

5个回答
netlhx 回答时间:2016-2-1 17:50:09
单从这里看不出什么,建议用DEBUG单步,检查数组里的值和输出值对应关系

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

潇潇雨歇pku 回答时间:2016-2-2 11:02:56
netlhx 发表于 2016-2-1 17:50
单从这里看不出什么,建议用DEBUG单步,检查数组里的值和输出值对应关系

估计楼主也就偶尔出现这样的情况,单步可能一天都碰不上……
回答时间:2016-2-2 11:05:48
把相关的几个数据都输出一下。
_风中的少年 回答时间:2017-7-30 09:56:45
本帖最后由 _风中的少年 于 2017-7-30 10:12 编辑

同出现除法错误!
                        dc_double=(double)adcSum/10000.0;
我这里dc_double 是双精度的,adcSum是uint32_t类型的,值大概为2000000.结果算出来用串口调试得到dc_double为0  

找到原因了,adcSum不知道怎么被置0了。。。好迷啊。。
估计楼主的问题也应该是程序其他地方不对吧?

ewindiy 回答时间:2018-3-14 15:37:49
_风中的少年 发表于 2017-7-30 09:56
同出现除法错误!
                        dc_double=(double)adcSum/10000.0;
我这里dc_double 是双精度 ...

应该不是,我把这个分解成整形换算就好了
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版