1、使用STMF32F407ZGTx MCU
RCC
SYS
2、生成项目,并打开
3、在主代码里添加如下代码
#define SHT20_WriteAddr 0x80
#define SHT20_ReadAddr 0x81
#define SHT20_Trig_T 0xE3
#define SHT20_Trig_RH 0xE5
float TemValue,RhValue;
void SHT20_ReadValues(void)
{
uint8_t tem[3],rh[3];
uint16_t Tdata=0,RHdata=0;
//第一种方法:分步操作
// uint8_t cmd;
//
// cmd=SHT20_Trig_T;
// HAL_I2C_Master_Transmit(&hi2c1,SHT20_WriteAddr,&cmd,1,0xffff);
// HAL_Delay(100);
// HAL_I2C_Master_Receive(&hi2c1,SHT20_ReadAddr,tem,3,0x3ffff);
//
// cmd=SHT20_Trig_RH;
// HAL_I2C_Master_Transmit(&hi2c1,SHT20_WriteAddr,&cmd,1,0xffff);
// HAL_Delay(100);
// HAL_I2C_Master_Receive(&hi2c1,SHT20_ReadAddr,rh,3,0x3ffff);
//第二种方法:复合操作
HAL_I2C_Mem_Read(&hi2c2,SHT20_ReadAddr,SHT20_Trig_T,I2C_MEMADD_SIZE_8BIT,tem,3,0xffff);
HAL_I2C_Mem_Read(&hi2c2,SHT20_ReadAddr,SHT20_Trig_RH,I2C_MEMADD_SIZE_8BIT,rh,3,0xffff);
Tdata = tem[0];
Tdata <<= 65536 8; tdata +="tem[1]" & 0xfe; rhdata="rh[0];" <<="8;" temvalue="Tdata" * 175.72f - 46.85f; rhvalue="RHdata" 125.0f 6.0f; } void sht20_softreset(void) { uint8_t cmd="0xfe;" hal_i2c_master_transmit(&hi2c2,sht20_writeaddr,&cmd,1,0xffff); hal_delay(100); < code></=>
while (1)
{
/* USER CODE END WHILE */
SHT20_SoftReset();
SHT20_ReadValues();
/* USER CODE BEGIN 3 */
}
4、下载代码执行
*[En]*
**
另外建了几个QQ技术群:
2、全栈技术群:616945527,加群口令abc123
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名www.nsxz.com出售(等宽等高字符四字域名)。
Original: https://www.cnblogs.com/zhaogaojian/p/16089177.html
Author: zhaogaojian
Title: STM32 例程-6 STM32CubeMx 读取SHT20 温湿度