标题:
stm32读取MS5837水深度压力传感器串口输出源码
[打印本页]
作者:
mmmk
时间:
2018-4-20 11:05
标题:
stm32读取MS5837水深度压力传感器串口输出源码
STM32读取MS5837压力数据,转化为深度。传输方式IIC
单片机源程序如下:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "key.h"
#include "myiic.h"
#include "MS5837.h"
#include "dac.h"
#include "timer.h"
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
delay_init(); //延时函数初始化
uart_init(115200); //串口初始化为115200
LED_Init(); //初始化与LED连接的硬件接口
Dac1_Init();
TIM3_Int_Init(24999, 17279);
delay_ms(1000);
IIC_Init(); //初始化IIC PC11 PC12口子
delay_ms(100);
MS583703BA_RESET(); // Reset Device 复位MS5837
delay_ms(100); //复位后延时(注意这个延时是一定必要的,可以缩短但似乎不能少于20ms)
MS5837_init(); //初始化MS5837
while(1)
{
delay_ms(50);
MS583703BA_getTemperature();//获取温度
MS583703BA_getPressure(); //获取大气压
printf(" Temp : %llu\r\n",TEMP); //串口输出原始数据
printf(" Pressure : %u\r\n\r\n\r\n",Pressure); //串口输出原始数据
}
}
复制代码
所有资料51hei提供下载:
MS5837串口输出.rar
(282.32 KB, 下载次数: 307)
2018-4-20 16:08 上传
点击文件名下载附件
串口输出
下载积分: 黑币 -5
作者:
l19951127
时间:
2018-5-16 09:18
谢谢分享
作者:
younico
时间:
2018-11-11 11:16
谢谢分享。
作者:
业界小生
时间:
2018-11-23 13:23
谢谢分享
作者:
噶哈哈8422
时间:
2018-12-2 19:29
谢谢分享
作者:
ZLB_HHXX
时间:
2019-1-13 23:13
谢谢分享
作者:
ZLB_HHXX
时间:
2019-1-14 11:25
你这个程序编译ok吗,我编译时显示Dac1_Init 和TIM3_Int_Init undefined?
作者:
136739843
时间:
2019-2-26 10:36
谢谢分享
作者:
sbkd123
时间:
2019-4-28 20:54
谢谢分享
作者:
sbkd123
时间:
2019-4-28 20:55
谢谢大佬分享
作者:
lixuesong
时间:
2019-7-5 16:15
有报错,看不懂,能麻烦给解释一下吗
作者:
liujiaxing
时间:
2019-8-1 09:09
非常感谢您的分享!
作者:
feihuoliuxing
时间:
2019-8-1 14:50
谢谢分享
作者:
我是牛牛
时间:
2019-8-1 16:17
学习一波
作者:
牛逼的小菜鸟
时间:
2019-8-2 22:16
哈哈,正在学习这一块
作者:
、。,
时间:
2019-10-3 14:24
TIM3_Int_Init(24999, 17279)
Dac1_Init();
为什么会报错啊?
作者:
prettytank
时间:
2019-10-4 10:37
第一次看到这个传感器,收藏下
作者:
raojialong111
时间:
2020-1-13 21:00
多谢分享,正在做这方面的开发
作者:
soulfeng
时间:
2020-2-19 14:44
很不错,里面的温度算法有点问题,基准值是20度,低于二十度要出错,要改一下
D2_Temp = MS583703BA_getConversion(0x54);
delay_ms(10);
if(D2_Temp>(((uint32_t)Cal_C[5])*256))
{
dT=D2_Temp - (((uint32_t)Cal_C[5])*256);
TEMP=2000+dT*((uint32_t)Cal_C[6])/8388608;
temp=TEMP/10;
}else{
dT=(((uint32_t)Cal_C[5])*256)-D2_Temp;
TEMP=2000-dT*((uint32_t)Cal_C[6])/8388608;
temp=TEMP/10;
}
作者:
liujuu
时间:
2020-3-16 13:30
感谢分享 就是有错误 正在找缺哪个文件
作者:
liujuu
时间:
2020-3-16 13:33
错误找到了 // Dac1_Init();
// TIM3_Int_Init(24999, 17279);
把这两个注释就好了
这2个函数 只有声明和调用 没有具体函数;
作者:
liujuu
时间:
2020-3-18 09:53
soulfeng 发表于 2020-2-19 14:44
很不错,里面的温度算法有点问题,基准值是20度,低于二十度要出错,要改一下
D2_Temp = MS583703B ...
temp=TEMP/10; 为什么要除以10 没理解
作者:
hostmkmk@sina.c
时间:
2020-11-22 23:34
这个代码还是哟问题,应该是带符号的数值
作者:
henryxue
时间:
2021-10-15 17:31
谢谢分享。各位大神的分析很有启发,谢谢!
作者:
wwqqqsdf
时间:
2022-4-18 10:43
大哥,你代码数据类型怎么能用uint64/32类型的,温补小于20度就溢出错乱了。靠谱点吧
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1