简介
本项目是工作中做的一个便携式手持检测仪项目,集成了自家公司的HCHO,TVOC传感器,买的sht30温湿度传感器,基本功能是能通过集成的传感器检测温湿度信息,空气中甲醛含量,TVOC含量,能通过厂家定制的段码屏显示这些信息和电池电量,能通过按键控制屏幕亮度,短按亮度变暗,长按关闭屏幕。基本功能框图如下:
在这里插入图片描述
本文将分模块对相应功能进行介绍。
SHT30温湿度介绍
SHT30是I2C接口的高精度温湿度传感器
I2C
I2C是常见的通讯协议,其基本的介绍见之前写的博文I2C知识点小结,在stm32中,有通过GPIO口模拟I2C的用法,有使用库函数的硬件I2C用法(据说库函数硬件I2C有些问题),此处对模拟I2C的基本函数进行介绍,代码如下:
/I2C.h******/
//IO方向设置,操控寄存器
#define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}
//IO输出电平操作,位段操作
#define IIC_SCL PBout(6) //SCL
#define IIC_SDA PBout(7) //SDA
/以下是I2C.c******/
1
2
3
4
5
6
7
8
9
1.初始化I2C,使用GPIO口PB6,PB7来模拟I2C
void IIC_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); //使能GPIOB时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //推挽输出
GPIO_InitStructure.GPIO_Speed