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

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

[复制链接]
q378159128 提问时间:2016-6-12 10:03 /
请教关于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位的变量


收藏 评论1 发布时间:2016-6-12 10:03

举报

1个回答
moyanming2013 回答时间:2016-6-12 11:04:04
真的非常复杂,建议你直接参考现成的例子。实现除法你就要崩溃了
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版