嵌入式STM32F103VE驱动温湿度STH30
管脚配置连接
SCL->GPIOC8
SDA->GPIOE6
程序代码
#include "stm32f10x.h"
#define BIT(x,n) ((x&(1<<n))!=0)
#define SCL_PIN GPIO_Pin_6 //SCL PC6
#define SDA_PIN GPIO_Pin_8 //SDA PE8
#define SCL_PORT GPIOC
#define SDA_PORT GPIOE
#define FAILURE 0
#define SUCCESS 1
float g_tmp,g_frh;
void SDA_Input_Mode()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = SDA_Pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(SDA_PORT, &GPIO_InitStructure);
}
void SDA_Output_Mode()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = SDA_Pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(SDA_PORT, &GPIO_InitStructure);
}
void SDA_Output( uint16_t val )
{
if ( val ) {
GPIO_SetBits(SDA_PORT,SDA_Pin);
} else {
GPIO_ResetBits(SDA_PORT,SDA_Pin);
}
}
void SCL_Output( uint16_t val )
{
if ( val ) {
GPIO_SetBits(SCL_PORT,SCL_Pin);
} else {
GPIO_ResetBits(SCL_PORT,SCL_Pin);
}
}
uint8_t SDA_Input()
{
return GPIO_ReadInputDataBit( SDA_PORT, SDA_Pin);
}
void delay_Us(unsigned long us)
{
unsigned int i=0;
for(i=0;i<n;i++)
{
__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
__nop();__nop();__nop();