• 大小: 17KB
    文件类型: .c
    金币: 2
    下载: 1 次
    发布日期: 2021-06-25
  • 语言: 其他
  • 标签: HMC5883L  STM32  

资源简介

自己按照官方文档编写的HMC5883L驱动程序代码,亲测好使!

资源截图

代码片段和文件信息

/*******************************************************************************
HMC5883L + ADXL345 + BMP085 驱动函数
注意初始化PB6、PB7接口,配置RCC GPIO NVIC
*******************************************************************************/
#include “stm32f10x.h“
#include “HMC5883L.h“
#include “printf.h“
#include      //Keil library  

#define   uchar unsigned char
#define   uint unsigned int
#define   OSS 0  // BMP085使用

#define HMC5883L_Addr   0x3C //器件地址
//#define HMC5883L_Addr_read   0x3d //器件地址

#define ADXL345_Addr    0xA6 //器件地址

#define BMP085_Addr     0xee //器件地址写
//#define BMP085_Addr_read     0xef //器件地址读

unsigned char BUF[8];                         //接收数据缓存区
char  test=0; 
int   xy;
float angle;
u8 geshibaiqianwanshiwan;           //显示变量
int A_XA_YA_Z;
//***BMP085使用
short ac1=408;
short ac2=-72; 
short ac3=-14383; 
unsigned short ac4=32741;
unsigned short ac5=32757;
unsigned short ac6=23153;
short b1=6190; 
short b2=4;
short mb=32768;
short mc=-8711;
short md=2868;

long  temperature;
long  pressure;
//********
 //************************************++++++++++++++++++++++++++++++++
/*模拟IIC端口输出输入定义*/
#define SCL_H         GPIOB->BSRR = GPIO_Pin_6
#define SCL_L         GPIOB->BRR  = GPIO_Pin_6 
   
#define SDA_H         GPIOB->BSRR = GPIO_Pin_7
#define SDA_L         GPIOB->BRR  = GPIO_Pin_7

#define SCL_read      GPIOB->IDR  & GPIO_Pin_6
#define SDA_read      GPIOB->IDR  & GPIO_Pin_7

void module_init(void)
{
  I2C_GPIO_Config();
  Init_HMC5883L();
  Init_ADXL345();
  Init_BMP085();
}

void conversion(long temp_data)  
{     
    shiwan=temp_data/100000+0x30 ;
    temp_data=temp_data%100000;   //取余运算 
    wan=temp_data/10000+0x30 ;
    temp_data=temp_data%10000;   //取余运算
qian=temp_data/1000+0x30 ;
    temp_data=temp_data%1000;    //取余运算
    bai=temp_data/100+0x30   ;
    temp_data=temp_data%100;     //取余运算
    shi=temp_data/10+0x30    ;
    temp_data=temp_data%10;      //取余运算
    ge=temp_data+0x30; 
}
/*******************************************************************************
* Function Name  : I2C_GPIO_Config
* Description    : Configration Simulation IIC GPIO
* Input          : None 
* Output         : None
* Return         : None
****************************************************************************** */
void I2C_GPIO_Config(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure; 
 
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;  
  GPIO_Init(GPIOB &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  GPIO_Init(GPIOB &GPIO_InitStructure);
}

/*******************************************************************************
* Function Name  : I2C_delay
* Description    : Simulation IIC Timing series delay

评论

共有 条评论