MPU6050(姿态传感器)
BH1750(光照度)
HDC1080(温湿度)
MCP3421(数模转换)
都在一个I2C总线上
main.c
/**********************芯片:STM32F103实现功能:引脚:***********************/#include "stdio.h"#include "stm32f10x.h"#include "main.h"#include "bsp_DMAusart2.h"#include "bsp_tim3.h"#include "bsp_tim2.h"#include "bsp_SysTick.h"#include "bsp_dwt.h"#include "bsp_i2c.h"#include "bsp_crc.h"#include "bsp_mpu6050.h"#include "bsp_bh1750.h"#include "bsp_hdc1080.h"#include "bsp_mcp3421.h"extern unsigned int Task_Delay[NumOfTask];uint8_t Scan_key_flag;float DWT_UsedTime = 0; //DWTint main(){// 初始化USARTUSART2_DMA_Init(9600, TwoUART.Tx_buf, TwoUART.Rx_buf, USART2_REC_LEN);USART2_DMASendString("AppStart!\n", sizeof("AppStart!"));// 初始化定时器TIM2_Init();//TIM3_Init(36-1, 1);1usTIM3_Int_Init(71, 999); // 1msuint8_t status1 = 0;uint8_t hdc1080_delay = 0;uint8_t bh1750_delay = 0;uint8_t hdc1080_init_flage = 0;float bh1750_dat;float temper = 0, humidity = 0;float mcp3421_dat = 0;int bh1750_err = 0, hdc1080_err = 0, MCP3421_err = 0;short mpu6050_Accel[3]; // 加速度short mpu6050_Gyro[3]; // 陀螺仪float mpu6050_Temp; // 姿态传感器内部温度uint8_t mpu6050_init_flage = 0;while(1){DWT_UsedTime = DWT_TS_GET_Flag();if(Scan_key_flag == 1){Scan_key_flag = 0;// 计数hdc1080_delay++;bh1750_delay++;}switch(status1){case 0: // bh1750光照bh1750_err = BH1750_READ_DATA(&bh1750_dat , &bh1750_delay);if(bh1750_err >= 0){status1 = 1;}break;case 1: // mcp3421温湿度if(hdc1080_init_flage == 0){HDC1080_Init();hdc1080_init_flage = 1;}else{hdc1080_err = HDC1080_Read_TemperAndHumidity( &temper, &humidity, &hdc1080_delay);if(hdc1080_err >= 0){status1 = 2;}}break;case 2: // hdc1080数压力MCP3421_Init();MCP3421_Read(&mcp3421_dat);status1 = 3;break;case 3: // mpu6050姿态传感器if(mpu6050_init_flage == 0){MPU6050_Init();mpu6050_init_flage = 1;}else{if(MPU6050ReadID() == 1) // 检测MPU是否存在{MPU6050ReadAcc(mpu6050_Accel); // 加速度MPU6050ReadGyro(mpu6050_Gyro); // 陀螺仪MPU6050_ReturnTemp(&mpu6050_Temp); // 器件内部温度}status1 = 0;}break;}DWT_UsedTime = DWT_TS_GET();// 输出数据if(bh1750_err >=0 && hdc1080_err >=0 ){char buffer6[256] = {0};sprintf(buffer6, "时间: %6.7f 计数:%d 光照: %5.5f 温度: %5.5f 湿度: %5.5f 压力: %5.5f Status%d\r\n 姿态: 加速度: %d %d %d 陀螺仪:%d %d %d 温度:%5.2f\r\n",DWT_UsedTime/72000000.0, hdc1080_delay, bh1750_dat, temper, humidity, mcp3421_dat, status1,mpu6050_Accel[0], mpu6050_Accel[1], mpu6050_Accel[2],mpu6050_Gyro[0], mpu6050_Gyro[1], mpu6050_Gyro[2], mpu6050_Temp); // 计数耗时时间USART2_DMASendString(buffer6, 256);}}}
