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

关于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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版