OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3569|回复: 3

请教关于2个32位变量软件实现64位变量的算法 IAR STM8

[复制链接]

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2016-4-29
在线时间
11 小时
发表于 2016-6-12 10:07:24 | 显示全部楼层 |阅读模式
15金钱
请教关于2个32位变量软件实现64位变量的算法

static uint32_t bmp280_compensate_pressure_int64(struct bmp280 *bmp280, int32_t adc_P)
{
    int64_t var1, var2, pressure;

    var1 = ((int64_t)bmp280->t_fine) - 128000;
    var2 = var1 * var1 * (int64_t)dig_P6;
    var2 = var2 + ((var1*(int64_t)dig_P5)<<17);
    var2 = var2 + (((int64_t)dig_P4)<<35);
    var1 = ((var1 * var1 * (int64_t)dig_P3)>>8) + ((var1 * (int64_t)dig_P2)<<12);
    var1 = (((((int64_t)1)<<47)+var1))*((int64_t)dig_P1)>>33;
    if (var1 == 0)
    {
        return 0; // avoid exception caused by division by zero
    }

    pressure = 1048576-adc_P;
    pressure = (((pressure<<31)-var2)*3125)/var1;
    var1 = (((int64_t)dig_P9) * (pressure>>13) * (pressure>>13)) >> 25;
    var2 = (((int64_t)dig_P8) * pressure) >> 19;
    pressure = ((pressure + var1 + var2) >> 8) + (((int64_t)dig_P7)<<4);

    return (uint32_t)pressure;
}

以上程序在iar  stm32上运行正常,但是在iar stm8上不支持64位的变量
看到下面这个帖子说可以用两个32位变量软件实现64位的计算,但是不知道具体实现方法,望知道的大神告知一下,不胜感激
http://bbs.21ic.com/icview-1390432-1-1.html

金钱只有15了,谢谢大家

最佳答案

查看完整内容[请看2#楼]

后来在网上看到用浮点数的方法弄的,虽然精度和计算速度可能没有64位变量高,但是也勉强实现了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2016-4-29
在线时间
11 小时
 楼主| 发表于 2016-6-12 10:07:25 | 显示全部楼层
后来在网上看到用浮点数的方法弄的,虽然精度和计算速度可能没有64位变量高,但是也勉强实现了
回复

使用道具 举报

58

主题

6275

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11271
金钱
11271
注册时间
2014-4-1
在线时间
1249 小时
发表于 2016-6-12 10:23:13 | 显示全部楼层
当年用51的是时候,经常会遇到类似超位数运算的问题,
当时没有现在发达的网络,所以专门购买过各种运算程序,
3寸磁盘,汇编写的。

21ic那个帖子,实际就是说这个办法,不一定花钱买,网上找找吧。

但如果编译器能够解决,那是最好了。
STM8的编译器究竟支持还是不支持64位?最好确认一下。


回复

使用道具 举报

58

主题

6275

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11271
金钱
11271
注册时间
2014-4-1
在线时间
1249 小时
发表于 2016-6-12 10:25:21 | 显示全部楼层

实在找不到,只好自己编,
和小学乘法是一样的道理,相乘、左移、相加,考虑各级进位。
但非常麻烦。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-29 05:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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