STM32驱动_GY-30

这篇博客详细介绍了如何在STM32单片机上驱动GY-30传感器,包括了GY_30.c、GY_30.h、myiic.c、myiic.h以及main.c等关键文件的代码实现,通过IIC通信协议进行数据交互,实现传感器数据的读取和应用。
摘要由CSDN通过智能技术生成

GY_30.c

  GY_30.c如下:

#include "sys.h"
#include "GY_30.h"
#include "delay.h"
#include "myiic.h"

BYTE BUF[8]; /* 接收数据缓存区 */

void BH1750_Start ( void ) {
    /* 光照传感器起始信号 */
    IIC_Start();
}

void BH1750_Stop ( void ) {
    /* 光照传感器停止信号 */
    IIC_Stop();
}

void BH1750_SendACK ( BYTE ack ) {
    /* 发送应答信号。参数ack为0是ACK,为1是NAK */
    if ( ack == 0 ) {
   
        IIC_Ack();
    } else {
   
        IIC_NAck();
    }
}

BYTE BH1750_RecvACK ( void ) {
    /* 接收应答信号 */
    return IIC_Wait_Ack();
}

void BH1750_SendByte ( BYTE dat ) {
    /* 向IIC总线发送一个字节数据 */
    IIC_Send_Byte ( dat );
    BH1750_RecvACK();
}

BYTE BH1750_RecvByte ( void ) {
    /* 从IIC总线接收一个字节数据 */
    return IIC_Read_Byte ( 0 );
}

void Single_Write_BH1750 ( uchar REG_Address ) {
   
    BH1750_Start(); /* 起始信号 */
    BH1750_SendByte ( SlaveAddress ); /* 发送设备地址 + 写信号 */
    BH1750_SendByte ( REG_Address ); /* 内部寄存器地址 */
    BH1750_Stop(); /* 发送停止信号 */
}

void Init_BH1750 ( void ) {
    /* BH1750初始化函数 */
    IIC_Init();
    delay_ms ( 50 );
    Single_Write_BH1750 ( 0x01 );
}

void Multiple_read_BH1750 ( void ) {
    /* 连续读出BH1750内部数据 */
    uchar i;
    BH1750_Start(); /* 起始信号 */
    BH1750_SendByte ( SlaveAddress + 1 ); /* 发送设备地址 + 读信号 */

    for ( i = 0; i < 3; i++ ) {
    /* 连续读取2个地址数据,存储在BUF中 */
        BUF[i]</
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值