資源簡介
自己按照官方文檔編寫的HMC5883L驅(qū)動(dòng)程序代碼,親測好使!
代碼片段和文件信息
/*******************************************************************************
HMC5883L +?ADXL345?+?BMP085?驅(qū)動(dòng)函數(shù)
注意初始化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];?????????????????????????//接收數(shù)據(jù)緩存區(qū)
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;???//取余運(yùn)算?
????wan=temp_data/10000+0x30?;
????temp_data=temp_data%10000;???//取余運(yùn)算
qian=temp_data/1000+0x30?;
????temp_data=temp_data%1000;????//取余運(yùn)算
????bai=temp_data/100+0x30???;
????temp_data=temp_data%100;?????//取余運(yùn)算
????shi=temp_data/10+0x30????;
????temp_data=temp_data%10;??????//取余運(yùn)算
????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
評(píng)論
共有 條評(píng)論