STM32F030读取温湿度传感器SHT20的C程序源码经.docx
《STM32F030读取温湿度传感器SHT20的C程序源码经.docx》由会员分享,可在线阅读,更多相关《STM32F030读取温湿度传感器SHT20的C程序源码经.docx(13页珍藏版)》请在冰豆网上搜索。
![STM32F030读取温湿度传感器SHT20的C程序源码经.docx](https://file1.bdocx.com/fileroot1/2022-10/29/9f7dde3d-fcff-4b6f-a48e-bd2876bf2832/9f7dde3d-fcff-4b6f-a48e-bd2876bf28321.gif)
STM32F030读取温湿度传感器SHT20的C程序源码经
*******************************************************************************@fileHTU20.x
*@briefHTU20function
*@cpuSTM32F051
*@compilerKeiluVisionV5.01
*@authorHanney
*@copyright
*@versionV1.0.1
*@date18-Sept-2015
*@modifydate20-Sept-2015
*******************************************************************************@attention
*/
//STM32F051模拟IIC
//#include"boardAPI.h"
//#include"stm32f0xx.h"
//#include"HTU20.h"
//#include"uart.h"
//#include"delay.h"
#include"stm32f0xx.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
*@retvalNone
*/
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,&GPIO_InitStructure;
}
/**
*@briefSetSDApindircateasintput
*@retvalNone
*/
voidHTU20_SDA_IN(
{
GPIO_StructInit(&GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=HTU20_SDA_PIN;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_Level_2;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_Init(HTU20_SDA_PORT,&GPIO_InitStructure;
}
/**
*@briefSetSDApinashigh
*@retvalNone
*/
voidHTU20_SDA_1(
{
GPIO_SetBits(HTU20_SDA_PORT,HTU20_SDA_PIN;
}
/**
*@briefSetSDApinaslow
*@retvalNone
*/
voidHTU20_SDA_0(
{
GPIO_ResetBits(HTU20_SDA_PORT,HTU20_SDA_PIN;}
/**
*@briefSetSCLpindircateasoutput
*@retvalNone
*/
voidHTU20_SCL_OUT(
{
GPIO_StructInit(&GPIO_InitStructure;
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,&GPIO_InitStructure;
}
/**
*@briefSetSCLpinashigh
*@retvalNone
*/
voidHTU20_SCL_1(
{
GPIO_SetBits(HTU20_SCL_PORT,HTU20_SCL_PIN;
}
/**
*@briefSetSCLpinaslow
*@retvalNone
*/
voidHTU20_SCL_0(
{
GPIO_ResetBits(HTU20_SCL_PORT,HTU20_SCL_PIN;
}
/*================================================================
SimulationI2CFunction
================================================================*/
/**
*@briefAshortdelayforiicsynchronization
*@paramtus
*@retvalNone
*/
voidI2CDelay(BYTEt
{
while(t--
{
__nop(;__nop(;__nop(;__nop(;__nop(;
__nop(;__nop(;__nop(;__nop(;__nop(;
__nop(;__nop(;__nop(;__nop(;__nop(;
__nop(;__nop(;__nop(;__nop(;__nop(;
__nop(;__nop(;__nop(;__nop(;__nop(;
__nop(;__nop(;__nop(;__nop(;__nop(;
__nop(;__nop(;__nop(;__nop(;__nop(;
}
}
/**
*@briefI2Cinit
*@retvalNone
*/
voidI2CInit(void
{
HTUInit(;
HTU20_SDA_OUT(;
HTU20_SCL_OUT(;
HTU20_SDA_1(;
I2CDelay(1;
HTU20_SCL