STM32F030读取温湿度传感器SHT20的C程序源码经文档格式.docx
《STM32F030读取温湿度传感器SHT20的C程序源码经文档格式.docx》由会员分享,可在线阅读,更多相关《STM32F030读取温湿度传感器SHT20的C程序源码经文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
*/
//STM32F051模拟IIC
//#include"
boardAPI.h"
stm32f0xx.h"
HTU20.h"
uart.h"
delay.h"
#include"
stm32lib.h"
#defineHTU20_CLKRCC_AHBPeriph_GPIOB
#defineHTU20_SDA_PORTGPIOB
#defineHTU20_SCL_PORTGPIOB
#defineHTU20_SDA_PINGPIO_Pin_11
#defineHTU20_SCL_PINGPIO_Pin_10
#defineRESOLUTION_11b0x81//RH11TH11
#defineRESOLUTION_12b0x01//RH8TH12
#defineRESOLUTION_13b0x80//RH10TH13
#defineRESOLUTION_14b0x00//RH12TH14
#defineOTP_disEN0x02//不能启动OPT加载
#defineOTP_EN0x00//启动OPT加载
#defineRESh16//湿度解析度
#defineRESt16//温度解析度
#defineMeasureDelay12//解析延时时间单位ms
typedefunsignedcharBYTE;
typedefunsignedintWORD;
BYTEDelayms;
GPIO_InitTypeDefGPIO_InitStructure;
voiddelayms(BYTEms;
/**
*@briefStartHTUGPIOportCLK
*@retvalNone
voidHTUInit(void
{
RCC_AHBPeriphClockCmd(HTU20_CLK,ENABLE;
}
/*================================================================
IICaddress
================================================================*/#defineSHT20ADDR0x80
/*================================================================ACKandNACKdefination
================================================================*/#defineACK0
#defineNACK1
HTU20DCommandCode
================================================================*//*
CommandCodeCommentTriggerTemperatureMeasurement0xe3HoldmasterTriggerHumidityMeasurement0xe5HoldmasterTriggerTemperatureMeasuremeng0xf3NoHoldmasterTriggerHumidityMeasurement0xf5NoHoldmasterWriteuserregister0xe6
Readuserregister0xe7
SoftReset0xfe
#defineSOFT_RESET0xfe
#defineREAD_REGISTER0xe7
#defineWRITE_REGISTER0xe6
#defineTRIGGER_TEMP0xf3
#defineTRIGGER_HUMI0xf5
HTU20operateinterface
================================================================*/
#defineHTU20_SCLGPIO_ReadInputDataBit(HTU20_SCL_PORT,HTU20_SCL_PIN#defineHTU20_SDAGPIO_ReadInputDataBit(HTU20_SDA_PORT,HTU20_SDA_PIN
*@briefSetSDApindircateasoutput
voidHTU20_SDA_OUT(
GPIO_StructInit(&
GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=HTU20_SDA_PIN;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType=GPIO_OType_OD;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_Level_2;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_Init(HTU20_SDA_PORT,&
*@briefSetSDApindircateasintput
voidHTU20_SDA_IN(
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
*@briefSetSDApinashigh
voidHTU20_SDA_1(
GPIO_SetBits(HTU20_SDA_PORT,HTU20_SDA_PIN;
*@briefSetSDApinaslow
voidHTU20_SDA_0(
GPIO_ResetBits(HTU20_SDA_PORT,HTU20_SDA_PIN;
}
*@briefSetSCLpindircateasoutput
voidHTU20_SCL_OUT(
GPIO_InitStructure.GPIO_Pin=HTU20_SCL_PIN;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType=GPIO_OType_OD;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_Level_2;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_Init(HTU20_SCL_PORT,&
*@briefSetSCLpinashigh
voidHTU20_SCL_1(
GPIO_SetBits(HTU20_SCL_PORT,HTU20_SCL_PIN;
*@briefSetSCLpinaslow
voidHTU20_SCL_0(
GPIO_ResetBits(HTU20_SCL_PORT,HTU20_SCL_PIN;
SimulationI2CFunction
*@briefAshortdelayforiicsynchronization
*@paramtus
voidI2CDelay(BYTEt
while(t--
__nop(;
__nop(;
*@briefI2Cinit
voidI2CInit(void
HTUInit(;
HTU20_SDA_OUT(;
HTU20_SCL_OUT(;
HTU20_SDA_1(;
I2CDelay(1;
HTU20_SCL