设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3366|回复: 3
打印 上一主题 下一主题

在STM8中如何处理16位*16位计算?

[复制链接]

1

主题

3

帖子

24

积分

新手上路

Rank: 1

积分
24
跳转到指定楼层
楼主
cqcwc 发表于 2016-6-17 16:08:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM8S难道不能进行16位*16位的计算???在IAR中,
计算结果错误的程序:
x=AD转换;
uint32_t a;
a=x*3300;
a=a/1024;
a算出来怎么都不对
后面改成
uint32_t a;
a=x*33;
a=a*100;
a=a/1024;

这样计算结果就是对的,这是怎么回事呢?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
沙发
admin 发表于 2016-6-17 19:27:24 | 只看该作者
8位单片机,数据宽度是16BIT,超过宽度的数据是会丢失的
回复 支持 反对

使用道具 举报

3

主题

8

帖子

82

积分

注册会员

Rank: 2

积分
82
板凳
lankii 发表于 2016-7-6 20:31:56 | 只看该作者
要强制类型转换,要不然被优化掉
uint32_t a;
a=(uint32_t)x*(3300);
a=a/(uint32_t)1024;
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-4-26 03:52 , Processed in 0.211820 second(s), 28 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表