資源簡(jiǎn)介
基于HAL庫的BH1750驅(qū)動(dòng)代碼,通訊方式為模擬IIC,非常適合在使用hal庫的stm開發(fā)版上移植(僅需改IO)

代碼片段和文件信息
#include?“BH1750.h“
uchar????BUF[8];?????????????????????????//接收數(shù)據(jù)緩存區(qū)??????
int?????dis_data;???????????????????????//變量
int???mcy;??????????????//表示進(jìn)位標(biāo)志位
float?Value_GY_30;
void?GPIOConfig(void)
{
??GPIO_InitTypeDef?GPIO_InitStruct;
??/*?GPIO?Ports?Clock?Enable?*/
??__HAL_RCC_GPIOD_CLK_ENABLE();
??__HAL_RCC_GPIOB_CLK_ENABLE();
??__HAL_RCC_GPIOA_CLK_ENABLE();
??/*Configure?GPIO?pin?Output?Level?*/
??HAL_GPIO_WritePin(GPIOB?GPIO_PIN_0|GPIO_PIN_1?GPIO_PIN_RESET);
??/*Configure?GPIO?pins?:?PB0?PB1?*/
??GPIO_InitStruct.Pin?=?GPIO_PIN_0|GPIO_PIN_1;
??GPIO_InitStruct.Mode?=?GPIO_MODE_OUTPUT_PP;
??GPIO_InitStruct.Speed?=?GPIO_SPEED_FREQ_LOW;
??HAL_GPIO_Init(GPIOB?&GPIO_InitStruct);
// GPIO_InitTypeDef?GPIO_InitStruct;
// ???/*開啟GPIOB的外設(shè)時(shí)鐘*/?
// ??RCC_APB2PeriphClockCmd(?RCC_APB2Periph_GPIOB?ENABLE);?
//
//????GPIO_InitStruct.GPIO_Mode?=?GPIO_MODE_OUTPUT_PP;??
//????GPIO_InitStruct.GPIO_Speed?=?GPIO_Speed_50MHz;
//????GPIO_InitStruct.GPIO_Pin?=?sda?|?scl?;
//????GPIO_Init(GPIOB?&GPIO_InitStruct);?
}
//系統(tǒng)主頻72MHZ
void?delay_us(uint16_t?us)
{
while(us--)
{
__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();
}
}
void?Delay_mms(uint16_t?tmp)
{
??uint16_t?i=0;
??while(tmp--)
??{
i=12000;
while(i--);
??????}
}
/***開始信號(hào)***/
void?BH1750_Start()
{
????HAL_GPIO_WritePin(GPIOB?sdaGPIO_PIN_SET);????????????????????//拉高數(shù)據(jù)線
????HAL_GPIO_WritePin(GPIOB?sclGPIO_PIN_SET);???????????????????//拉高時(shí)鐘線
????delay_us(5);?????????????????//延時(shí)
????HAL_GPIO_WritePin(GPIOB?sdaGPIO_PIN_RESET);????????????????????//產(chǎn)生下降沿
????delay_us(5);?????????????????//延時(shí)
????HAL_GPIO_WritePin(GPIOB?sclGPIO_PIN_RESET);????????????????????//拉低時(shí)鐘線
}
/*****停止信號(hào)******/
void?BH1750_Stop()
{
????HAL_GPIO_WritePin(GPIOB?sdaGPIO_PIN_RESET);???????????????????//拉低數(shù)據(jù)線
????HAL_GPIO_WritePin(GPIOB?sclGPIO_PIN_SET);??????????????????????//拉高時(shí)鐘線
????delay_us(5);?????????????????//延時(shí)
????HAL_GPIO_WritePin(GPIOB?sdaGPIO_PIN_SET);????????????????????//產(chǎn)生上升沿
????delay_us(5);?????????????????//延時(shí)
}
/**************************************
發(fā)送應(yīng)答信號(hào)
入口參數(shù):ack?(0:ACK?1:NAK)
**************************************/
void?BH1750_SendACK(int?ack)
{
GPIO_InitTypeDef?GPIO_InitStruct;
??GPIO_InitStruct.Pin?=?GPIO_PIN_0|GPIO_PIN_1;
??GPIO_InitStruct.Mode?=?GPIO_MODE_OUTPUT_PP;
??GPIO_InitStruct.Speed?=?GPIO_SPEED_FREQ_LOW;
??HAL_GPIO_Init(GPIOB
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????7947??2019-04-23?18:14??bh1750.c
?????文件?????????888??2019-04-23?18:55??BH1750.h
- 上一篇:食品類小程序
- 下一篇:b樣條曲線、曲面繪制軟件
評(píng)論
共有 條評(píng)論