打印

AVR单片机怎么运算浮点数就死机????

[复制链接]
3769|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
areshan|  楼主 | 2010-10-12 21:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
chunyang| | 2010-10-12 22:30 | 只看该作者
程序不能这么写,编译会出错。

使用特权

评论回复
板凳
areshan|  楼主 | 2010-10-13 08:55 | 只看该作者
为什么呢??? 2# chunyang

使用特权

评论回复
地板
兰天白云| | 2010-10-13 09:19 | 只看该作者
我们的同事都这么写,没问题

使用特权

评论回复
5
chunyang| | 2010-10-13 10:29 | 只看该作者
这跟你用的编译器版本、平台等均有关,这样的写法不规范,兼容性差。

使用特权

评论回复
6
areshan|  楼主 | 2010-10-13 10:51 | 只看该作者
如果不用浮点数运算,改成long int sum; sum=sum*5986/100000;不知道能不能比浮点数要快?????????????????/

使用特权

评论回复
7
tjx727| | 2010-10-13 11:28 | 只看该作者
整数运算肯定比浮点运算要快,8BIT的芯片能用整型尽量用整型

使用特权

评论回复
8
areshan|  楼主 | 2010-10-13 18:30 | 只看该作者
试过结果全是0,明显数据溢出了! 7# tjx727

使用特权

评论回复
9
chunyang| | 2010-10-13 18:36 | 只看该作者
要讲究计算方法的,不是列个算式那么简单。

使用特权

评论回复
10
mxh0506| | 2010-10-13 22:41 | 只看该作者
AVR算浮点虽然不够快,但是这样的计算量应该是ms级响应吧?如果象死机一样,肯定是程序里面有别的问题。
用的什么编译器?

使用特权

评论回复
11
acute1110| | 2010-10-14 09:13 | 只看该作者
还是建议转整形计算,另外要check 编译后的汇编代码,看看编译后的具体结果来判断修改的方法

使用特权

评论回复
12
IJK| | 2010-10-14 10:26 | 只看该作者
试过结果全是0,明显数据溢出了! 7# tjx727
areshan 发表于 2010-10-13 18:30


考虑到100000超出了16位,改成这样或许好点:
long int sum;
sum=sum*5986/1000;
sum=sum/100;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

728

帖子

0

粉丝