资源简介

基于HAL库的BH1750驱动代码,通讯方式为模拟IIC,非常适合在使用hal库的stm开发版上移植(仅需改IO)

资源截图

代码片段和文件信息

#include “BH1750.h“

uchar    BUF[8];                         //接收数据缓存区      
int     dis_data;                       //变量
int   mcy;              //表示进位标志位
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的外设时钟*/ 
//   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); 
}

//系统主频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--);
      }
}


/***开始信号***/
void BH1750_Start()
{
    HAL_GPIO_WritePin(GPIOB sdaGPIO_PIN_SET);                    //拉高数据线
    HAL_GPIO_WritePin(GPIOB sclGPIO_PIN_SET);                   //拉高时钟线
    delay_us(5);                 //延时
    HAL_GPIO_WritePin(GPIOB sdaGPIO_PIN_RESET);                    //产生下降沿
    delay_us(5);                 //延时
    HAL_GPIO_WritePin(GPIOB sclGPIO_PIN_RESET);                    //拉低时钟线
}

/*****停止信号******/
void BH1750_Stop()
{
    HAL_GPIO_WritePin(GPIOB sdaGPIO_PIN_RESET);                   //拉低数据线
    HAL_GPIO_WritePin(GPIOB sclGPIO_PIN_SET);                      //拉高时钟线
    delay_us(5);                 //延时
    HAL_GPIO_WritePin(GPIOB sdaGPIO_PIN_SET);                    //产生上升沿
    delay_us(5);                 //延时
}

/**************************************
发送应答信号
入口参数: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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        7947  2019-04-23 18:14  bh1750.c
     文件         888  2019-04-23 18:55  BH1750.h

评论

共有 条评论