91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-24
  • 語言: C/C++
  • 標簽: HMC5883??STM32??

資源簡介

HMC5883接口 驅(qū)動,STM32直接使用,其他MCU可移植,C語言!

資源截圖

代碼片段和文件信息

#ifndef???__HMC5883_C_
#define???__HMC5883_C_

#include????
#include????


#include?“stm32f10x.h“

#include?“HMC5883.h“



uint8_t?BUF[7];


/*?Private?functions?---------------------------------------------------------*/

/**
??*?@brief??Configure?the?used?I/O?ports?pin
??*?@param??None
??*?@retval?None
??*/
void?I2C_GPIO_Config_HMC5883(void)
{
??GPIO_InitTypeDef??GPIO_InitStructure;?

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB?ENABLE);

??//?Configure?I2C??pins:?SCL?and?SDA
??GPIO_InitStructure.GPIO_Pin?=??I2C_HMC5883_SCL?|?I2C_HMC5883_SDA;?
??GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
??GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_Out_OD;
??GPIO_Init(I2C_HMC5883_GPIO?&GPIO_InitStructure);
}

void?HMC5883_Start(void)
{
SDAH;
SCLH;
????SysTimDelay1uS(SampleDelayCnt);??????????
????SDAL;????????????????
????SysTimDelay1uS(SampleDelayCnt);???????
SCLL;??

}

void?HMC5883_Stop(void)
{
SDAL;
SCLH;
????SysTimDelay1uS(SampleDelayCnt);?????????????
????SDAH;
????SysTimDelay1uS(SampleDelayCnt);???????????
}

void?HMC5883_SendACK(u8?ack)
{
if(ack)
SDAL;
else
SDAH;
????SCLH;???????????????
????SysTimDelay1uS(SampleDelayCnt);??????????
????SCLL;????????????????
????SysTimDelay1uS(SampleDelayCnt);???????????
}

u8?HMC5883_RecvACK(void)
{
???u8?CY;
?
????SCLH;
????SysTimDelay1uS(SampleDelayCnt);???????????????
????CY=?Read_SDA;????????????
????SCLL;??????????????????
????SysTimDelay1uS(SampleDelayCnt);???????

????return?CY;
}
void?HMC5883_SendByte(BYTE?dat)
{
????BYTE?i;

????for?(i=0;?i<8;?i++)????
????{
??if(dat>=0x80)
SDAH;
else
SDAL;
????????dat?<<=?1;????????
????????SCLH;??????????
????????SysTimDelay1uS(SampleDelayCnt);???
????????SCLL;??????????
????????SysTimDelay1uS(SampleDelayCnt);?????
????}
????HMC5883_RecvACK();
}

BYTE?HMC5883_RecvByte(void)
{
????BYTE?i;
????BYTE?dat?=?0;

????SDAH;??????????????????
????for?(i=0;?i<8;?i++)????
????{
????????dat?<<=?1;
????????SCLH;?????????????
????????SysTimDelay1uS(SampleDelayCnt);??
????????dat?|=?Read_SDA;???
????????SCLL;?????????
????????SysTimDelay1uS(SampleDelayCnt);????
????}
????return?dat;
}

//***************************************************

void?Single_Write_HMC5883(unsigned?char?REG_Addressunsigned?char?REG_data)
{
????HMC5883_Start();?????????????????
????HMC5883_SendByte(I2C_SLAVE_ADDRESS7);??
????HMC5883_SendByte(REG_Address);????
????HMC5883_SendByte(REG_data);??????
????HMC5883_Stop();???
}
unsigned?char?Single_Read_HMC5883(unsigned?char?REG_Address)
{??
????unsigned?char?REG_data;
?
????HMC5883_Start();???????????????????????
????HMC5883_SendByte(I2C_SLAVE_ADDRESS7);??
????HMC5883_SendByte(REG_Address);???????
????HMC5883_Start();????????????????
????HMC5883_SendByte(I2C_SLAVE_ADDRESS7+1);?????
????REG_data=HMC5883_RecvByte();?
HMC5883_SendACK(0);?///?1???最后一個數(shù)據(jù)需要回NOACK
HM

評論

共有 條評論