GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHzGPIO_Init(BH1750_GPIO_PORT, &GPIO_InitStructure);//初始化GPIOD3,6GPIO_SetBits(BH1750_GPIO_PORT,BH1750_SCL_GPIO_PIN|BH1750_SDA_GPIO_PIN);//Single_Write_BH1750(0x01)...
在访问I2C设备前,请先调用 i2c_CheckDevice() 检测I2C设备是否正常,该函数会配置GPIO */ static void...
在访问I2C设备前,请先调用 i2c_CheckDevice() 检测I2C设备是否正常,该函数会配置GPIO */ static void...
GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化结构体 RCC_GY30_ENABLE(); // 使能GPIO时钟 GPIO_InitStruct.Pins = GPIO_SDA|GPIO_SCL; // GPIO引脚 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; //开漏输出GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 输出速度高 GPIO_Init(PORT_GY30, &GPIO...
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 3 I2C通讯协议 I2C协议属于总线协议,半双工,串行通讯,通过设备地址来选中设备。在I2C通讯过程中,一次完整的数据传输需要有起始信号、数据费收发、应答信号、停止信号等几部分组成,下面是对该协议的实现程序示例: ...
void Light_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; // 使能GPIOD时钟 __HAL_RCC_GPIOD_CLK_ENABLE(); // PD6和7引脚置高 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_SET); // 初始化引脚 GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15; ...
.sda = 17, // 数据引脚 GPIO 17 }, .port = 0, // I2C 端口号 }; // 初始化 I2C 接口 hosal_i2c_init(&i2c0); for (;;) { uint8_t buffer[2]; // 用于接收光照强度数据的缓冲区 uint8_t cmd = BH1750_ONETIME_H_MODE; // 设置 BH1750 的测量模式为高分辨率一次性测量 ...
.sda = 17, // 数据引脚 GPIO 17 }, .port = 0, // I2C 端口号 }; // 初始化 I2C 接口 hosal_i2c_init(&i2c0); for (;;) { uint8_t buffer[2]; // 用于接收光照强度数据的缓冲区 uint8_t cmd = BH1750_ONETIME_H_MODE; // 设置 BH1750 的测量模式为高分辨率一次性测量 ...
GPIO_Init(GPIOB, &GPIO_InitStructure);// 全部拉高,IIC处于空闲状态GPIO_SetBits(GPIOB,GPIO_Pin_6 | GPIO_Pin_7);// BH1750上电BH1750_Byte_Write(POWER_ON);// 复位BH1750BH1750_Byte_Write(MODULE_RESET); } 4.3 读取BH1750测量结果
.sda = 17, // 数据引脚 GPIO 17 }, .port = 0, // I2C 端口号 }; // 初始化 I2C 接口 hosal_i2c_init(&i2c0); for (;;) { uint8_t buffer[2]; // 用于接收光照强度数据的缓冲区 uint8_t cmd = BH1750_ONETIME_H_MODE; // 设置 BH1750 的测量模式为高分辨率一次性测量 ...