专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
谁有BMP180STM32F4的程序
2019-07-21 00:35
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
5899
3
1767
谁有BMP180STM32F4的程序
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
bg8wj
1楼-- · 2019-07-21 03:41
/**************************实现函数********************************************
*函数原型: void BMP180_init(void)
*功 能: 供外部调用的初始化程序
*******************************************************************************/
void BMP180_init(void) {
_cm_Offset = 0;
_Pa_Offset = 0; // 1hPa = 100Pa = 1mbar
//初始化气压传感器,
//MODE_ULTRA_HIGHRES 高精度测量模式
BMP_init(MODE_ULTRA_HIGHRES, 0, 1);
}
/**************************实现函数********************************************
*函数原型: void BMP180_getTemperature(int32_t *_Temperature,u8 rw)
*功 能: 读取温度值。
输入 :
int32_t *_Temperature 温度结果存放的指针
u8 rw 是否需要等待 0 则不需要等待。
*******************************************************************************/
void BMP180_getTemperature(int32_t *_Temperature,u8 rw) {
BMP180_calcTrueTemperature(rw); // force b5 update
*_Temperature = ((b5 + (int32_t)8) >> 4);
}
void BMP180_getAltitude(int32_t *_centimeters,u8 rw){
int32_t TruePressure;
BMP180_calcTruePressure(&TruePressure,rw);
BMP180_newPressure(TruePressure);
TruePressure = last_Pressure;
*_centimeters = 4433000 * (1 - pow((TruePressure / (float)_param_datum), 0.1903)) + _cm_Offset;
// converting from float to int32_t truncates toward zero, 100.999985 becomes 100 resulting in 1 cm error (max).
}
void BMP180_calcTrueTemperature(u8 rw){
int32_t ut,x1,x2,mctemp,mdtemp;
if(rw){
BMP180_writemem(CONTROL, READ_TEMPERATURE);
delay_ms(10); // min. 4.5ms read Temp delay
}
BMP180_readmem(CONTROL_OUTPUT, 2, _buff);
ut = ((int32_t)_buff[0] << 8 | ((int32_t)_buff[1])); // uncompensated temperature value
// calculate temperature
x1 = (((int32_t)ut - (int32_t)ac6) * (int32_t)ac5) >> 15;
mctemp= mc;
mdtemp= md;
x2 = (mctemp <<11) / (x1 + mdtemp);
b5 = x1 + x2;
}
加载中...
正点原子
2楼-- · 2019-07-21 06:02
自己移植一个吧。或者自己写一个。
加载中...
玄转的木马
3楼-- · 2019-07-21 08:09
精彩回答 2 元偷偷看……
加载中...
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
*函数原型: void BMP180_init(void)
*功 能: 供外部调用的初始化程序
*******************************************************************************/
void BMP180_init(void) {
_cm_Offset = 0;
_Pa_Offset = 0; // 1hPa = 100Pa = 1mbar
//初始化气压传感器,
//MODE_ULTRA_HIGHRES 高精度测量模式
BMP_init(MODE_ULTRA_HIGHRES, 0, 1);
}
/**************************实现函数********************************************
*函数原型: void BMP180_getTemperature(int32_t *_Temperature,u8 rw)
*功 能: 读取温度值。
输入 :
int32_t *_Temperature 温度结果存放的指针
u8 rw 是否需要等待 0 则不需要等待。
*******************************************************************************/
void BMP180_getTemperature(int32_t *_Temperature,u8 rw) {
BMP180_calcTrueTemperature(rw); // force b5 update
*_Temperature = ((b5 + (int32_t)8) >> 4);
}
void BMP180_getAltitude(int32_t *_centimeters,u8 rw){
int32_t TruePressure;
BMP180_calcTruePressure(&TruePressure,rw);
BMP180_newPressure(TruePressure);
TruePressure = last_Pressure;
*_centimeters = 4433000 * (1 - pow((TruePressure / (float)_param_datum), 0.1903)) + _cm_Offset;
// converting from float to int32_t truncates toward zero, 100.999985 becomes 100 resulting in 1 cm error (max).
}
void BMP180_calcTrueTemperature(u8 rw){
int32_t ut,x1,x2,mctemp,mdtemp;
if(rw){
BMP180_writemem(CONTROL, READ_TEMPERATURE);
delay_ms(10); // min. 4.5ms read Temp delay
}
BMP180_readmem(CONTROL_OUTPUT, 2, _buff);
ut = ((int32_t)_buff[0] << 8 | ((int32_t)_buff[1])); // uncompensated temperature value
// calculate temperature
x1 = (((int32_t)ut - (int32_t)ac6) * (int32_t)ac5) >> 15;
mctemp= mc;
mdtemp= md;
x2 = (mctemp <<11) / (x1 + mdtemp);
b5 = x1 + x2;
}
一周热门 更多>