c语言float气压,STM32+MS5611测气压温度例程详解,测试无误

DELAY

#include "delay.h"

static u8 fac_us=0;//us延时倍乘数

static u16 fac_ms=0;//ms延时倍乘数,在ucos下,代表每个节拍的ms数

//初始化延迟函数

//SYSTICK的时钟固定为HCLK时钟的1/8

//SYSCLK:系统时钟

void delay_init()

{

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//选择外部时钟 HCLK/8

fac_us=SystemCoreClock/8000000;//为系统时钟的1/8

fac_ms=(u16)fac_us*1000;//非OS下,代表每个ms需要的systick时钟数

}

//延时nus

//nus为要延时的us数.

void delay_us(u32 nus)

{

u32 temp;

SysTick->LOAD=nus*fac_us; //时间加载

SysTick->VAL=0x00; //清空计数器

SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;//开始倒数

do

{

temp=SysTick->CTRL;

}while((temp&0x01)&&!(temp&(1<<16)));//等待时间到达

SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;//关闭计数器

SysTick->VAL =0X00; //清空计数器

}

//延时nms

//注意nms的范围

//SysTick->LOAD为24位寄存器,所以,最大延时为:

//nms<=0xffffff*8*1000/SYSCLK

//SYSCLK单位为Hz,nms单位为ms

//对72M条件下,nms<=1864

void delay_ms(u16 nms)

{

u32 temp;

SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)

SysTick->VAL =0x00;//清空计数器

SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;//开始倒数

do

{

temp=SysTick->CTRL;

}while((temp&0x01)&&!(temp&(1<<16)));//等待时间到达

SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;//关闭计数器

SysTick->VAL =0X00; //清空计数器

}

MS5611#include "MS5611.h"

/*宏定义------------------------------------------------------------------*/

//定义器件在IIC总线中的从地址,根据CSB引脚不同修改

//#define MS561101BA_ADDR 0xec //CBR=1 0x76 I2C address when

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值