以下是我用STM32F401VE與DHT11實現的溫濕度自動報警,與按鍵點燈,全滅,流水燈,正反流水燈的仿真與代碼分享
捕獲.GIF (417.49 KB, 下載次數: 17)
下載附件
2020-5-6 16:22 上傳
#include "stm32f4xx.h" // Device header
#include "misc.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_exti.h"
#include "stm32f4xx_syscfg.h"
typedef struct
{
u8 humidity_int;
u8 humidity_float;
u8 temperature_int;
u8 temperature_float;
u8 crc;
}
DHT11_Type;
//unsigned char DHT11_ReadData(void);
void InitKEY();
void InitLED();
void state1();
void state2();
void Init_EXTIX_TI();
void InitLED_DHT11();
void DHT11_start();
int DHT11_SlaveResp();
int DHT11_Read(DHT11_Type * data);
//unsigned char DHT11_ReadByte();
void DHT11_ReadData();
void DATAPin_Mode_Out();
void DATAPin_Mode_In();
void SysTick_Init();
void delay_ms(unsigned int ms);
void delay_us(unsigned int us);
void delay_s(unsigned int s);
int exti0_flag = 0;
int exti1_flag = 0;
int exti2_flag = 0;
int exti3_flag = 0; //???
int exti4_flag = 0;
int temp; // ??
int humi; //??
void Delay(int n) //??
{
int tt,jj;
for(tt=0;tt<n;tt++)
for(jj=0;jj<110;jj++);
}
int main()
{
Init_EXTIX_TI();
InitKEY();
InitLED();
InitLED_DHT11();
SysTick_Init();
while (1)
{
if (exti0_flag == 1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
}else if (exti1_flag == 1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
}else if (exti3_flag == 1 )
{
state2();
}else if (exti2_flag == 1 || exti3_flag == 2)
{
state1();
}else if (exti4_flag == 1)
{
DHT11_ReadData();
}
}
}
void Init_EXTIX_TI(void) //????
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0 | EXTI_PinSource1 | EXTI_PinSource2 | EXTI_PinSource3 | EXTI_PinSource4);
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line1 | EXTI_Line2 | EXTI_Line3 | EXTI_Line4;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void EXTI0_IRQHandler(void) //??????
{
// if(EXTI_GetITStatus(EXTI_Line0)!= RESET)
// {
// GPIO_ResetBits(GPIOB,GPIO_Pin_0);
// }
if(EXTI_GetITStatus(EXTI_Line0)!= RESET)
{
exti1_flag = 0;
exti2_flag = 0;
exti3_flag = 0;
exti4_flag = 0;
exti0_flag = 1;
EXTI_ClearITPendingBit(EXTI_Line0);
}
}
void EXTI1_IRQHandler(void) //??????
{
// if (EXTI_GetITStatus(EXTI_Line1)!= RESET)
// {
// GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
// }
if (EXTI_GetITStatus(EXTI_Line1)!= RESET)
{
exti0_flag = 0;
exti2_flag = 0;
exti3_flag = 0;
exti4_flag = 0;
exti1_flag = 1;
EXTI_ClearITPendingBit(EXTI_Line1);
}
}
void EXTI2_IRQHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line2)!= RESET)
{
exti0_flag = 0;
exti1_flag = 0;
exti3_flag = 0;
exti4_flag = 0;
exti2_flag = 1;
EXTI_ClearITPendingBit(EXTI_Line2);
}
// if (EXTI_GetITStatus(EXTI_Line2)!= RESET)
// {
// state1();
// }
}
void EXTI3_IRQHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line3)!= RESET)
{
// exti3_flag ++;
exti0_flag = 0;
exti1_flag = 0;
exti2_flag = 0;
exti4_flag = 0;
if (exti3_flag == 0)
exti3_flag = 1;
else if (exti3_flag == 1)
exti3_flag = 2;
else if (exti3_flag == 2)
{
exti3_flag = 1;
}
EXTI_ClearITPendingBit(EXTI_Line3);
}
// if (EXTI_GetITStatus(EXTI_Line3)!= RESET)
// {
// exti3_flag ++;
// if ( exti3_flag%2 == 1)
// {
// state2();
// }else if (exti3_flag%2 == 0)
// {
// state1();
// }
// }
}
void EXTI4_IRQHandler(void)
{
// if (EXTI_GetITStatus(EXTI_Line4)!= RESET)
// {
exti0_flag = 0;
exti1_flag = 0;
exti2_flag = 0;
exti3_flag = 0;
exti4_flag = 1;
EXTI_ClearITPendingBit(EXTI_Line4);
// }
}
void state1()
{
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
// delay_ms(100);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_3);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
Delay(5000);
}
void state2() //?????2
{
GPIO_ResetBits(GPIOB,GPIO_Pin_3);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
Delay(5000);
}
void InitKEY() //?????,PA0~PA4
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void InitLED() //???LED,PB0~PB3
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void InitLED_DHT11() //DHT11???,PD7~PD8
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_SetBits(GPIOD,GPIO_Pin_7 | GPIO_Pin_8);
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
///////////////////////////DHT11????////////////////////////////////////////
//1) ???PD0?????????????
void DATAPin_Mode_Out()
{
GPIO_InitTypeDef aaa;
aaa.GPIO_Mode = GPIO_Mode_OUT;
aaa.GPIO_OType = GPIO_OType_PP;
aaa.GPIO_Pin = GPIO_Pin_0 ;
aaa.GPIO_Speed = GPIO_Speed_50MHz;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_Init(GPIOD , &aaa);
}
//2) ???PD0?????????
void DATAPin_Mode_In()
{
GPIO_InitTypeDef aaa;
aaa.GPIO_Mode = GPIO_Mode_IN;
//aaa.GPIO_OType = GPIO_OType_PP;
aaa.GPIO_Pin = GPIO_Pin_0 ;
aaa.GPIO_Speed = GPIO_Speed_50MHz;
aaa.GPIO_PuPd = GPIO_PuPd_UP;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_Init(GPIOD , &aaa);
}
void DHT11_start() //DHT11????
{
//??PD0?????
DATAPin_Mode_Out();
//???? ????????
GPIO_SetBits(GPIOD, GPIO_Pin_0);
delay_ms(20);
//??;????,??????
GPIO_ResetBits(GPIOD, GPIO_Pin_0);
delay_ms(20); //??18ms
//????????DHT11??
GPIO_SetBits(GPIOD, GPIO_Pin_0);
delay_us(30); //??20~40us
}
//???????? ==>??????????????
int DHT11_SlaveResp()
{
int tmp = 0;
//??PD0?????
DATAPin_Mode_In();
//1) ??PD0???DHT11??
while(1)
{
delay_us(1);
if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 0) //?????,?????
{
break;
}
tmp++;
if(tmp > 99) //??tmp>99,????
{
return -1; //????-1,????????
}
}
tmp = 0;
//2) ??PD0???????100us????????
while(1)
{
delay_us(1);
if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1) //?????,?????
{
break;
}
tmp++;
if(tmp > 99) //??tmp>99,????
{
return -1; //????-1,????????
}
}
tmp = 0;
//3) ??PD0?????DHT11??
while(1)
{
delay_us(1);
if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 0) //?????,?????
{
break;
}
tmp++;
if(tmp > 99) //??tmp>99,????
{
return -1; //????-1,????????
}
}
return 0; //??0,??????????,??????,??-1.??????????
}
unsigned char tmp = 0;
//??????? 8bit
unsigned char DHT11_ReadByte()
{
int i;
unsigned char tmp = 0;//????????? 0000 0000
for(i=0; i<8; i++)
{
//?????????
while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 0);
//???????? 0, ??1
delay_us(30);
if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1)//????????1
{
tmp |= 0x01<<(7-i);
while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1);//????????????
}
}
return tmp; //??????????
}
unsigned char DHT11_Data[5];
void DHT11_ReadData()
{
DHT11_start();
DHT11_SlaveResp();
DHT11_Data[0] = DHT11_ReadByte();
DHT11_Data[1] = DHT11_ReadByte();
DHT11_Data[2] = DHT11_ReadByte();
DHT11_Data[3] = DHT11_ReadByte();
DHT11_Data[4] = DHT11_ReadByte();
if(DHT11_Data[0] + DHT11_Data[1]+ DHT11_Data[2]+ DHT11_Data[3] != DHT11_Data[4])
{
while(1)
{
GPIO_SetBits(GPIOA, GPIO_Pin_8);
delay_us(10);
GPIO_ResetBits(GPIOA, GPIO_Pin_8);
}
}
if(DHT11_Data[0]> 60)
{
GPIO_ResetBits(GPIOD, GPIO_Pin_7);
}else GPIO_SetBits(GPIOD, GPIO_Pin_7);
if(DHT11_Data[2] > 30)
{
GPIO_ResetBits(GPIOD, GPIO_Pin_8);
}else GPIO_SetBits(GPIOD, GPIO_Pin_8);
}
void SysTick_Init()
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
}
void delay_us(unsigned int us) //?????
{
unsigned int set_time = 84*us;
unsigned int tmp;
SysTick->LOAD = set_time;
SysTick->VAL = 0;
SysTick->CTRL |= 0x01;
while(1)
{
tmp = SysTick->CTRL;
if(tmp & 0x01<<16)
{
break;
}
}
SysTick->VAL = 0;
SysTick->CTRL &= (~0x01);
}
void delay_ms(unsigned int ms)
{
unsigned int set_time = 84000*ms;
unsigned int tmp;
SysTick->LOAD = set_time;
SysTick->VAL = 0;
SysTick->CTRL |= 0x01;
while(1)
{
tmp = SysTick->CTRL;
if(tmp & 0x01<<16)
{
//GPIO_ToggleBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
break;
}
}
SysTick->VAL = 0;
SysTick->CTRL &= (~0x01);
}
void delay_s(unsigned int s)
{
while (s--)
{
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
}
}
//#include <stm32f4xx.h> // Device header
//#include "stm32f4xx_exti.h"
//#include "stm32f4xx.h" // Device header
//#include "misc.h"
//#define EXTI_LINENONE ((uint32_t)0x00000) /* No interrupt selected */
//#define __STM32F4xx_SYSCFG_H
//#include "stm32f4xx_gpio.h" //
//#include "stm32f4xx_rcc.h" //
//int flag2=0;
//int Tem = 8;
//int Hum;
//int Read_Hum_Tem;
//int flag3=0;
//int flag4=0;
//int times =8;
//void init_key();
//void init_led1();
//void init_led2();
//void InitLED_DHT11();
//void DHT11_MasterStart();
//int DHT11_SlaveResp();
//unsigned char DHT11_ReadByte();
//void DHT11_ReadData();
//void DATAPin_Mode_Out();
//void DATAPin_Mode_In();
//void SysTick_Init();
//void delay_ms();
//void delay_us();
//void delay_s();
//void delay_s1();
//void s_0();
//void s_1();
//void s_2();
//void s_3_down();
//void s_3_up();
//int i,a,b,c;
//int value;
//void Init_EXTIX_TI(void);
//void EXTI3_IRQHandler(void);
//void EXTI2_IRQHandler(void) ;
//void EXTI4_IRQHandler(void);
//unsigned char table[]="Tem 00 Hum 00";
//void delay_s1(int n) //??
//{
// int i;
// for(i=0;i<n;i++)
// {
// int x=0x12345;
// while(x--);
// }
//}
//void Systick_Init()//????
//{
// SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
//}
////2,?????
//void delay_us(unsigned int us)
//{
// unsigned int set_time = 84*us;
// unsigned int tmp;
// //1,?????
// SysTick->LOAD = set_time; //?????SysTick->LOAD? ?? 24bit
//
// SysTick->VAL = 0; //???SysTick->VAL???,?????????????SysTick->LOAD??
//
// //2,???????
// //SysTick->CTRL = SysTick->CTRL | 0x01; //??????1 --?| ?????
// SysTick->CTRL |= 0x01;
//
// //3,??????
// while(1)
// {
// tmp = SysTick->CTRL; //???16????1?
//
// if(tmp & 0x01<<16) //????????,????????16??1,??????,??????
// {
// break;
// }
//
// }
// //4,???????
// SysTick->VAL = 0;
//
// SysTick->CTRL &= (~0x01); //???????0
//}
////3,?????
//void delay_ms(unsigned int ms) //ms????????199ms
//{
// unsigned int set_time = 84000*ms;
// unsigned int tmp;
// //1,?????
// SysTick->LOAD = set_time; //?????SysTick->LOAD? ?? 24bit
//
// SysTick->VAL = 0; //???SysTick->VAL???,?????????????SysTick->LOAD??
//
// //2,???????
// //SysTick->CTRL = SysTick->CTRL | 0x01; //??????1 --?| ?????
// SysTick->CTRL |= 0x01;
//
// //3,??????
// while(1)
// {
// tmp = SysTick->CTRL; //???16????1?
//
// if(tmp & 0x01<<16) //????????,????????16??1,??????,??????
// {
// break;
// }
//
// }
// //4,???????
// SysTick->VAL = 0;
//
// SysTick->CTRL &= (~0x01); //???????0
//}
////4, ????
//void delay_s(unsigned int s)
//{
// while(s--)
// {
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
//
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
// }
//}
//void init_led1()
//{
// GPIO_InitTypeDef GPIO_InitStructure;//led(pb0)?a?3???????3???????//????gpio???1??
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//gpio3????
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//???o???????|???a
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//????3????
// GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//????3?
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//?3????
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//?T????
// GPIO_Init(GPIOB, &GPIO_InitStructure);//
//}
//void init_led2()
//{
// GPIO_InitTypeDef GPIO_InitStructure;//led(pb0)?a?3???????3???????//????gpio???1??
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);//gpio3????
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//???o???????|???a
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//????3????
// GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//????3?
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//?3????
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//?T????
// GPIO_Init(GPIOD, &GPIO_InitStructure);//
//}
//void init_key()
//{
// GPIO_InitTypeDef GPIO_InitStructure;
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//gpio3????
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//???o???????|???a
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//????3????
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//?T????
// GPIO_Init(GPIOA, &GPIO_InitStructure);//
//}
//void Init_EXTIX_TI(void) //????
//{
// EXTI_InitTypeDef EXTI_InitStructure;
// NVIC_InitTypeDef NVIC_InitStructure;
//
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
// SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource2 | EXTI_PinSource3 | EXTI_PinSource4);
//
// EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
// EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
// EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3 | EXTI_Line4;
// EXTI_InitStructure.EXTI_LineCmd = ENABLE;
// EXTI_Init(&EXTI_InitStructure);
//
// NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
// NVIC_Init(&NVIC_InitStructure);
//
// NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
// NVIC_Init(&NVIC_InitStructure);
//
// NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5;
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
// NVIC_Init(&NVIC_InitStructure);
//}
//void EXTI2_IRQHandler(void)
//{
// if (EXTI_GetITStatus(EXTI_Line2)!= RESET)
// {
// flag2 = 1;
// }
// EXTI_ClearITPendingBit(EXTI_Line2);
//}
//void EXTI3_IRQHandler(void)
//{
// if (EXTI_GetITStatus(EXTI_Line3)!= RESET)
// {
// if (flag3 == 0)
// {
// flag3 = 1;
// }
// else
// {
// flag3 = 0;
// }
// }
// EXTI_ClearITPendingBit(EXTI_Line3);
//}
//void EXTI4_IRQHandler(void)
//{
// flag4=1;
// flag3=0;
// flag2=0;
// EXTI_ClearITPendingBit(EXTI_Line4);
//}
//int main()
//{
// Init_EXTIX_TI();
// init_key();
// init_led1();
// init_led2();
// //Systick_Init();
// GPIO_SetBits(GPIOB, GPIO_Pin_All);
// GPIO_SetBits(GPIOD, GPIO_Pin_All);
// while(1)
// {
// times=4;
// if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0)
// {
// s_0();
// }
// if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0)
// {
// s_1();
// }
//
// if (flag2 == 1&&flag3 == 0)
// {
// s_2();
// }
//
// if (flag3 == 1)
// {
// s_3_down();
// flag2 =2;
// }
// if (flag2 == 2&&flag3 == 0)
// {
// s_3_up();
// }
// if(flag4==1)
// {
// DHT11_ReadData();
// }
// }
// }
//void s_0()
//{
// GPIO_ResetBits(GPIOB,GPIO_Pin_0);//???,pb0?
//}
//void s_1()
//{
// GPIO_SetBits(GPIOB,GPIO_Pin_0);
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
//}
//void s_2()
//{
// GPIO_ResetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_ResetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_ResetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_ResetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
//}
//void s_3_up()
//{
// GPIO_ResetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_ResetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_ResetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_ResetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
// }
//void s_3_down()
//{
// GPIO_ResetBits(GPIOB,GPIO_Pin_3);
// GPIO_SetBits(GPIOB, GPIO_Pin_1);
// GPIO_SetBits(GPIOB, GPIO_Pin_2);
// GPIO_SetBits(GPIOB, GPIO_Pin_0);
// delay_s1(10);
//
// GPIO_ResetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB, GPIO_Pin_0);
// GPIO_SetBits(GPIOB, GPIO_Pin_1);
// GPIO_SetBits(GPIOB, GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_ResetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB, GPIO_Pin_0);
// GPIO_SetBits(GPIOB, GPIO_Pin_2);
// GPIO_SetBits(GPIOB, GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_ResetBits(GPIOB,GPIO_Pin_0);
// GPIO_SetBits(GPIOB, GPIO_Pin_1);
// GPIO_SetBits(GPIOB, GPIO_Pin_2);
// GPIO_SetBits(GPIOB, GPIO_Pin_3);
// delay_s1(10);
//}
//void DATAPin_Mode_Out()
//{
// GPIO_InitTypeDef aaa;
//
// aaa.GPIO_Mode = GPIO_Mode_OUT;
// aaa.GPIO_OType = GPIO_OType_PP;
// aaa.GPIO_Pin = GPIO_Pin_0 ;
// aaa.GPIO_Speed = GPIO_Speed_50MHz;
//
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
//
// GPIO_Init(GPIOD , &aaa);
//
//}
////2) ???PD0???????
//void DATAPin_Mode_In()
//{
// GPIO_InitTypeDef aaa;
//
// aaa.GPIO_Mode = GPIO_Mode_IN;
// //aaa.GPIO_OType = GPIO_OType_PP;
// aaa.GPIO_Pin = GPIO_Pin_0 ;
// aaa.GPIO_Speed = GPIO_Speed_50MHz;
// aaa.GPIO_PuPd = GPIO_PuPd_UP;
//
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
//
// GPIO_Init(GPIOD , &aaa);
//}
//void DHT11_Start() //DHT11????
//{
// //??PD0?????
// DATAPin_Mode_Out();
//
// //????,????????
// GPIO_SetBits(GPIOD, GPIO_Pin_0);
// delay_ms(20);
//
// //??????,??????
// GPIO_ResetBits(GPIOD, GPIO_Pin_0);
// delay_ms(20); //??18ms
//
// //????????DHT11??
// GPIO_SetBits(GPIOD, GPIO_Pin_0);
// delay_us(30); //??20~40us
//}
////???????? ==>??????????????
//int DHT11_SlaveResp()
//{
// int tmp = 0;
// //??PD0?????
// DATAPin_Mode_In();
//
// //1) ??PD0???DHT11??
// while(1)
// {
// delay_us(1);
//
// if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 0) //?????,?????
// {
// break;
// }
// tmp++;
// if(tmp > 99) //??tmp>99,??
// {
// return -1;
// }
// }
// tmp = 0;
//
// //2) ??PD0????100us???????
// while(1)
// {
// delay_us(1);
//
// if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1) //??,?????
// {
// break;
// }
// tmp++;
// if(tmp > 99) //??tmp>99,??
// {
// return -1;
// }
//
// }
// tmp = 0;
// //3) ??PD0?????DHT11??
// while(1)
// {
// delay_us(1);
//
// if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_12) == 0)
// {
// break;
// }
// tmp++;
// if(tmp > 99)
// {
// return -1;
// }
// }
//
// return 0; //???????
//}
//unsigned char tmp = 0;
////?????? 8bit
//unsigned char DHT11_ReadByte()
//{
// int i;
// unsigned char tmp = 0;// 0000 0000
// for(i=0; i<8; i++)
// {
// //?????????
// while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 0);
//
// //???0??1
// delay_us(30);
//
// if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1)//?1
// {
// tmp |= 0x01<<(7-i);
// while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1);//?????????
// }
//
//
// }
//
// return tmp; //??????????
//
//}
//u8 d=0;
//unsigned char DHT11_Data[5];
//int i;
//void DHT11_ReadData() //?????40bit???
//{
// unsigned char DHT11_Data[5];
//
// DHT11_Start();//1,STM32??????
//
// DHT11_SlaveResp();//2,??DHT11????
//
// DHT11_Data[0] = DHT11_ReadByte();//3,??5??????
// DHT11_Data[1] = DHT11_ReadByte();
// DHT11_Data[2] = DHT11_ReadByte();
// DHT11_Data[3] = DHT11_ReadByte();
// DHT11_Data[4] = DHT11_ReadByte();
//
// if(DHT11_Data[0] + DHT11_Data[1]+ DHT11_Data[2]+ DHT11_Data[3] != DHT11_Data[4])//4,????? DHT11_Data[0] + DHT11_Data[1]+ DHT11_Data[2]+ DHT11_Data[3] = DHT11_Data[4]
// {
// while(1)
// {
//
// GPIO_SetBits(GPIOA, GPIO_Pin_8);
// delay_s1(10);
// GPIO_ResetBits(GPIOA, GPIO_Pin_8);
// }
// }
//
// if(DHT11_Data[0]> 60)//5????,????
// {
// GPIO_ResetBits(GPIOD, GPIO_Pin_2);
// //GPIO_SetBits(GPIOB, GPIO_Pin_7);
// }
// if(DHT11_Data[2] > 30)
// {
// GPIO_ResetBits(GPIOD, GPIO_Pin_1);
//// GPIO_SetBits(GPIOB, GPIO_Pin_7);
// }
//}
#include "stm32f4xx.h" // Device header
#include "misc.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_exti.h"
#include "stm32f4xx_syscfg.h"
typedef struct
{
u8 humidity_int;
u8 humidity_float;
u8 temperature_int;
u8 temperature_float;
u8 crc;
}
DHT11_Type;
//unsigned char DHT11_ReadData(void);
void InitKEY();
void InitLED();
void state1();
void state2();
void Init_EXTIX_TI();
void InitLED_DHT11();
void DHT11_start();
int DHT11_SlaveResp();
int DHT11_Read(DHT11_Type * data);
//unsigned char DHT11_ReadByte();
void DHT11_ReadData();
void DATAPin_Mode_Out();
void DATAPin_Mode_In();
void SysTick_Init();
void delay_ms(unsigned int ms);
void delay_us(unsigned int us);
void delay_s(unsigned int s);
int exti0_flag = 0;
int exti1_flag = 0;
int exti2_flag = 0;
int exti3_flag = 0; //???
int exti4_flag = 0;
int temp; // ??
int humi; //??
void Delay(int n) //??
{
int tt,jj;
for(tt=0;tt<n;tt++)
for(jj=0;jj<110;jj++);
}
int main()
{
Init_EXTIX_TI();
InitKEY();
InitLED();
InitLED_DHT11();
SysTick_Init();
while (1)
{
if (exti0_flag == 1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
}else if (exti1_flag == 1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
}else if (exti3_flag == 1 )
{
state2();
}else if (exti2_flag == 1 || exti3_flag == 2)
{
state1();
}else if (exti4_flag == 1)
{
DHT11_ReadData();
}
}
}
void Init_EXTIX_TI(void) //????
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0 | EXTI_PinSource1 | EXTI_PinSource2 | EXTI_PinSource3 | EXTI_PinSource4);
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line1 | EXTI_Line2 | EXTI_Line3 | EXTI_Line4;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void EXTI0_IRQHandler(void) //??????
{
// if(EXTI_GetITStatus(EXTI_Line0)!= RESET)
// {
// GPIO_ResetBits(GPIOB,GPIO_Pin_0);
// }
if(EXTI_GetITStatus(EXTI_Line0)!= RESET)
{
exti1_flag = 0;
exti2_flag = 0;
exti3_flag = 0;
exti4_flag = 0;
exti0_flag = 1;
EXTI_ClearITPendingBit(EXTI_Line0);
}
}
void EXTI1_IRQHandler(void) //??????
{
// if (EXTI_GetITStatus(EXTI_Line1)!= RESET)
// {
// GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
// }
if (EXTI_GetITStatus(EXTI_Line1)!= RESET)
{
exti0_flag = 0;
exti2_flag = 0;
exti3_flag = 0;
exti4_flag = 0;
exti1_flag = 1;
EXTI_ClearITPendingBit(EXTI_Line1);
}
}
void EXTI2_IRQHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line2)!= RESET)
{
exti0_flag = 0;
exti1_flag = 0;
exti3_flag = 0;
exti4_flag = 0;
exti2_flag = 1;
EXTI_ClearITPendingBit(EXTI_Line2);
}
// if (EXTI_GetITStatus(EXTI_Line2)!= RESET)
// {
// state1();
// }
}
void EXTI3_IRQHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line3)!= RESET)
{
// exti3_flag ++;
exti0_flag = 0;
exti1_flag = 0;
exti2_flag = 0;
exti4_flag = 0;
if (exti3_flag == 0)
exti3_flag = 1;
else if (exti3_flag == 1)
exti3_flag = 2;
else if (exti3_flag == 2)
{
exti3_flag = 1;
}
EXTI_ClearITPendingBit(EXTI_Line3);
}
// if (EXTI_GetITStatus(EXTI_Line3)!= RESET)
// {
// exti3_flag ++;
// if ( exti3_flag%2 == 1)
// {
// state2();
// }else if (exti3_flag%2 == 0)
// {
// state1();
// }
// }
}
void EXTI4_IRQHandler(void)
{
// if (EXTI_GetITStatus(EXTI_Line4)!= RESET)
// {
exti0_flag = 0;
exti1_flag = 0;
exti2_flag = 0;
exti3_flag = 0;
exti4_flag = 1;
EXTI_ClearITPendingBit(EXTI_Line4);
// }
}
void state1()
{
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
// delay_ms(100);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_3);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
Delay(5000);
}
void state2() //?????2
{
GPIO_ResetBits(GPIOB,GPIO_Pin_3);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
Delay(5000);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
Delay(5000);
}
void InitKEY() //?????,PA0~PA4
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void InitLED() //???LED,PB0~PB3
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void InitLED_DHT11() //DHT11???,PD7~PD8
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_SetBits(GPIOD,GPIO_Pin_7 | GPIO_Pin_8);
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
///////////////////////////DHT11????////////////////////////////////////////
//1) ???PD0?????????????
void DATAPin_Mode_Out()
{
GPIO_InitTypeDef aaa;
aaa.GPIO_Mode = GPIO_Mode_OUT;
aaa.GPIO_OType = GPIO_OType_PP;
aaa.GPIO_Pin = GPIO_Pin_0 ;
aaa.GPIO_Speed = GPIO_Speed_50MHz;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_Init(GPIOD , &aaa);
}
//2) ???PD0?????????
void DATAPin_Mode_In()
{
GPIO_InitTypeDef aaa;
aaa.GPIO_Mode = GPIO_Mode_IN;
//aaa.GPIO_OType = GPIO_OType_PP;
aaa.GPIO_Pin = GPIO_Pin_0 ;
aaa.GPIO_Speed = GPIO_Speed_50MHz;
aaa.GPIO_PuPd = GPIO_PuPd_UP;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_Init(GPIOD , &aaa);
}
void DHT11_start() //DHT11????
{
//??PD0?????
DATAPin_Mode_Out();
//???? ????????
GPIO_SetBits(GPIOD, GPIO_Pin_0);
delay_ms(20);
//??;????,??????
GPIO_ResetBits(GPIOD, GPIO_Pin_0);
delay_ms(20); //??18ms
//????????DHT11??
GPIO_SetBits(GPIOD, GPIO_Pin_0);
delay_us(30); //??20~40us
}
//???????? ==>??????????????
int DHT11_SlaveResp()
{
int tmp = 0;
//??PD0?????
DATAPin_Mode_In();
//1) ??PD0???DHT11??
while(1)
{
delay_us(1);
if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 0) //?????,?????
{
break;
}
tmp++;
if(tmp > 99) //??tmp>99,????
{
return -1; //????-1,????????
}
}
tmp = 0;
//2) ??PD0???????100us????????
while(1)
{
delay_us(1);
if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1) //?????,?????
{
break;
}
tmp++;
if(tmp > 99) //??tmp>99,????
{
return -1; //????-1,????????
}
}
tmp = 0;
//3) ??PD0?????DHT11??
while(1)
{
delay_us(1);
if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 0) //?????,?????
{
break;
}
tmp++;
if(tmp > 99) //??tmp>99,????
{
return -1; //????-1,????????
}
}
return 0; //??0,??????????,??????,??-1.??????????
}
unsigned char tmp = 0;
//??????? 8bit
unsigned char DHT11_ReadByte()
{
int i;
unsigned char tmp = 0;//????????? 0000 0000
for(i=0; i<8; i++)
{
//?????????
while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 0);
//???????? 0, ??1
delay_us(30);
if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1)//????????1
{
tmp |= 0x01<<(7-i);
while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1);//????????????
}
}
return tmp; //??????????
}
unsigned char DHT11_Data[5];
void DHT11_ReadData()
{
DHT11_start();
DHT11_SlaveResp();
DHT11_Data[0] = DHT11_ReadByte();
DHT11_Data[1] = DHT11_ReadByte();
DHT11_Data[2] = DHT11_ReadByte();
DHT11_Data[3] = DHT11_ReadByte();
DHT11_Data[4] = DHT11_ReadByte();
if(DHT11_Data[0] + DHT11_Data[1]+ DHT11_Data[2]+ DHT11_Data[3] != DHT11_Data[4])
{
while(1)
{
GPIO_SetBits(GPIOA, GPIO_Pin_8);
delay_us(10);
GPIO_ResetBits(GPIOA, GPIO_Pin_8);
}
}
if(DHT11_Data[0]> 60)
{
GPIO_ResetBits(GPIOD, GPIO_Pin_7);
}else GPIO_SetBits(GPIOD, GPIO_Pin_7);
if(DHT11_Data[2] > 30)
{
GPIO_ResetBits(GPIOD, GPIO_Pin_8);
}else GPIO_SetBits(GPIOD, GPIO_Pin_8);
}
void SysTick_Init()
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
}
void delay_us(unsigned int us) //?????
{
unsigned int set_time = 84*us;
unsigned int tmp;
SysTick->LOAD = set_time;
SysTick->VAL = 0;
SysTick->CTRL |= 0x01;
while(1)
{
tmp = SysTick->CTRL;
if(tmp & 0x01<<16)
{
break;
}
}
SysTick->VAL = 0;
SysTick->CTRL &= (~0x01);
}
void delay_ms(unsigned int ms)
{
unsigned int set_time = 84000*ms;
unsigned int tmp;
SysTick->LOAD = set_time;
SysTick->VAL = 0;
SysTick->CTRL |= 0x01;
while(1)
{
tmp = SysTick->CTRL;
if(tmp & 0x01<<16)
{
//GPIO_ToggleBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
break;
}
}
SysTick->VAL = 0;
SysTick->CTRL &= (~0x01);
}
void delay_s(unsigned int s)
{
while (s--)
{
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
}
}
//#include <stm32f4xx.h> // Device header
//#include "stm32f4xx_exti.h"
//#include "stm32f4xx.h" // Device header
//#include "misc.h"
//#define EXTI_LINENONE ((uint32_t)0x00000) /* No interrupt selected */
//#define __STM32F4xx_SYSCFG_H
//#include "stm32f4xx_gpio.h" //
//#include "stm32f4xx_rcc.h" //
//int flag2=0;
//int Tem = 8;
//int Hum;
//int Read_Hum_Tem;
//int flag3=0;
//int flag4=0;
//int times =8;
//void init_key();
//void init_led1();
//void init_led2();
//void InitLED_DHT11();
//void DHT11_MasterStart();
//int DHT11_SlaveResp();
//unsigned char DHT11_ReadByte();
//void DHT11_ReadData();
//void DATAPin_Mode_Out();
//void DATAPin_Mode_In();
//void SysTick_Init();
//void delay_ms();
//void delay_us();
//void delay_s();
//void delay_s1();
//void s_0();
//void s_1();
//void s_2();
//void s_3_down();
//void s_3_up();
//int i,a,b,c;
//int value;
//void Init_EXTIX_TI(void);
//void EXTI3_IRQHandler(void);
//void EXTI2_IRQHandler(void) ;
//void EXTI4_IRQHandler(void);
//unsigned char table[]="Tem 00 Hum 00";
//void delay_s1(int n) //??
//{
// int i;
// for(i=0;i<n;i++)
// {
// int x=0x12345;
// while(x--);
// }
//}
//void Systick_Init()//????
//{
// SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
//}
////2,?????
//void delay_us(unsigned int us)
//{
// unsigned int set_time = 84*us;
// unsigned int tmp;
// //1,?????
// SysTick->LOAD = set_time; //?????SysTick->LOAD? ?? 24bit
//
// SysTick->VAL = 0; //???SysTick->VAL???,?????????????SysTick->LOAD??
//
// //2,???????
// //SysTick->CTRL = SysTick->CTRL | 0x01; //??????1 --?| ?????
// SysTick->CTRL |= 0x01;
//
// //3,??????
// while(1)
// {
// tmp = SysTick->CTRL; //???16????1?
//
// if(tmp & 0x01<<16) //????????,????????16??1,??????,??????
// {
// break;
// }
//
// }
// //4,???????
// SysTick->VAL = 0;
//
// SysTick->CTRL &= (~0x01); //???????0
//}
////3,?????
//void delay_ms(unsigned int ms) //ms????????199ms
//{
// unsigned int set_time = 84000*ms;
// unsigned int tmp;
// //1,?????
// SysTick->LOAD = set_time; //?????SysTick->LOAD? ?? 24bit
//
// SysTick->VAL = 0; //???SysTick->VAL???,?????????????SysTick->LOAD??
//
// //2,???????
// //SysTick->CTRL = SysTick->CTRL | 0x01; //??????1 --?| ?????
// SysTick->CTRL |= 0x01;
//
// //3,??????
// while(1)
// {
// tmp = SysTick->CTRL; //???16????1?
//
// if(tmp & 0x01<<16) //????????,????????16??1,??????,??????
// {
// break;
// }
//
// }
// //4,???????
// SysTick->VAL = 0;
//
// SysTick->CTRL &= (~0x01); //???????0
//}
////4, ????
//void delay_s(unsigned int s)
//{
// while(s--)
// {
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
//
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
// delay_ms(100);
// }
//}
//void init_led1()
//{
// GPIO_InitTypeDef GPIO_InitStructure;//led(pb0)?a?3???????3???????//????gpio???1??
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//gpio3????
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//???o???????|???a
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//????3????
// GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//????3?
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//?3????
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//?T????
// GPIO_Init(GPIOB, &GPIO_InitStructure);//
//}
//void init_led2()
//{
// GPIO_InitTypeDef GPIO_InitStructure;//led(pb0)?a?3???????3???????//????gpio???1??
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);//gpio3????
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//???o???????|???a
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//????3????
// GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//????3?
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//?3????
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//?T????
// GPIO_Init(GPIOD, &GPIO_InitStructure);//
//}
//void init_key()
//{
// GPIO_InitTypeDef GPIO_InitStructure;
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//gpio3????
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//???o???????|???a
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//????3????
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//?T????
// GPIO_Init(GPIOA, &GPIO_InitStructure);//
//}
//void Init_EXTIX_TI(void) //????
//{
// EXTI_InitTypeDef EXTI_InitStructure;
// NVIC_InitTypeDef NVIC_InitStructure;
//
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
// SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource2 | EXTI_PinSource3 | EXTI_PinSource4);
//
// EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
// EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
// EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3 | EXTI_Line4;
// EXTI_InitStructure.EXTI_LineCmd = ENABLE;
// EXTI_Init(&EXTI_InitStructure);
//
// NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
// NVIC_Init(&NVIC_InitStructure);
//
// NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
// NVIC_Init(&NVIC_InitStructure);
//
// NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5;
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
// NVIC_Init(&NVIC_InitStructure);
//}
//void EXTI2_IRQHandler(void)
//{
// if (EXTI_GetITStatus(EXTI_Line2)!= RESET)
// {
// flag2 = 1;
// }
// EXTI_ClearITPendingBit(EXTI_Line2);
//}
//void EXTI3_IRQHandler(void)
//{
// if (EXTI_GetITStatus(EXTI_Line3)!= RESET)
// {
// if (flag3 == 0)
// {
// flag3 = 1;
// }
// else
// {
// flag3 = 0;
// }
// }
// EXTI_ClearITPendingBit(EXTI_Line3);
//}
//void EXTI4_IRQHandler(void)
//{
// flag4=1;
// flag3=0;
// flag2=0;
// EXTI_ClearITPendingBit(EXTI_Line4);
//}
//int main()
//{
// Init_EXTIX_TI();
// init_key();
// init_led1();
// init_led2();
// //Systick_Init();
// GPIO_SetBits(GPIOB, GPIO_Pin_All);
// GPIO_SetBits(GPIOD, GPIO_Pin_All);
// while(1)
// {
// times=4;
// if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0)
// {
// s_0();
// }
// if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0)
// {
// s_1();
// }
//
// if (flag2 == 1&&flag3 == 0)
// {
// s_2();
// }
//
// if (flag3 == 1)
// {
// s_3_down();
// flag2 =2;
// }
// if (flag2 == 2&&flag3 == 0)
// {
// s_3_up();
// }
// if(flag4==1)
// {
// DHT11_ReadData();
// }
// }
// }
//void s_0()
//{
// GPIO_ResetBits(GPIOB,GPIO_Pin_0);//???,pb0?
//}
//void s_1()
//{
// GPIO_SetBits(GPIOB,GPIO_Pin_0);
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
//}
//void s_2()
//{
// GPIO_ResetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_ResetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_ResetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_ResetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
//}
//void s_3_up()
//{
// GPIO_ResetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_ResetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_ResetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_SetBits(GPIOB,GPIO_Pin_0); //PA0???
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB,GPIO_Pin_2);
// GPIO_ResetBits(GPIOB,GPIO_Pin_3);
// delay_s1(10);
// }
//void s_3_down()
//{
// GPIO_ResetBits(GPIOB,GPIO_Pin_3);
// GPIO_SetBits(GPIOB, GPIO_Pin_1);
// GPIO_SetBits(GPIOB, GPIO_Pin_2);
// GPIO_SetBits(GPIOB, GPIO_Pin_0);
// delay_s1(10);
//
// GPIO_ResetBits(GPIOB,GPIO_Pin_2);
// GPIO_SetBits(GPIOB, GPIO_Pin_0);
// GPIO_SetBits(GPIOB, GPIO_Pin_1);
// GPIO_SetBits(GPIOB, GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_ResetBits(GPIOB,GPIO_Pin_1);
// GPIO_SetBits(GPIOB, GPIO_Pin_0);
// GPIO_SetBits(GPIOB, GPIO_Pin_2);
// GPIO_SetBits(GPIOB, GPIO_Pin_3);
// delay_s1(10);
//
// GPIO_ResetBits(GPIOB,GPIO_Pin_0);
// GPIO_SetBits(GPIOB, GPIO_Pin_1);
// GPIO_SetBits(GPIOB, GPIO_Pin_2);
// GPIO_SetBits(GPIOB, GPIO_Pin_3);
// delay_s1(10);
//}
//void DATAPin_Mode_Out()
//{
// GPIO_InitTypeDef aaa;
//
// aaa.GPIO_Mode = GPIO_Mode_OUT;
// aaa.GPIO_OType = GPIO_OType_PP;
// aaa.GPIO_Pin = GPIO_Pin_0 ;
// aaa.GPIO_Speed = GPIO_Speed_50MHz;
//
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
//
// GPIO_Init(GPIOD , &aaa);
//
//}
////2) ???PD0???????
//void DATAPin_Mode_In()
//{
// GPIO_InitTypeDef aaa;
//
// aaa.GPIO_Mode = GPIO_Mode_IN;
// //aaa.GPIO_OType = GPIO_OType_PP;
// aaa.GPIO_Pin = GPIO_Pin_0 ;
// aaa.GPIO_Speed = GPIO_Speed_50MHz;
// aaa.GPIO_PuPd = GPIO_PuPd_UP;
//
// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
//
// GPIO_Init(GPIOD , &aaa);
//}
//void DHT11_Start() //DHT11????
//{
// //??PD0?????
// DATAPin_Mode_Out();
//
// //????,????????
// GPIO_SetBits(GPIOD, GPIO_Pin_0);
// delay_ms(20);
//
// //??????,??????
// GPIO_ResetBits(GPIOD, GPIO_Pin_0);
// delay_ms(20); //??18ms
//
// //????????DHT11??
// GPIO_SetBits(GPIOD, GPIO_Pin_0);
// delay_us(30); //??20~40us
//}
////???????? ==>??????????????
//int DHT11_SlaveResp()
//{
// int tmp = 0;
// //??PD0?????
// DATAPin_Mode_In();
//
// //1) ??PD0???DHT11??
// while(1)
// {
// delay_us(1);
//
// if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 0) //?????,?????
// {
// break;
// }
// tmp++;
// if(tmp > 99) //??tmp>99,??
// {
// return -1;
// }
// }
// tmp = 0;
//
// //2) ??PD0????100us???????
// while(1)
// {
// delay_us(1);
//
// if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1) //??,?????
// {
// break;
// }
// tmp++;
// if(tmp > 99) //??tmp>99,??
// {
// return -1;
// }
//
// }
// tmp = 0;
// //3) ??PD0?????DHT11??
// while(1)
// {
// delay_us(1);
//
// if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_12) == 0)
// {
// break;
// }
// tmp++;
// if(tmp > 99)
// {
// return -1;
// }
// }
//
// return 0; //???????
//}
//unsigned char tmp = 0;
////?????? 8bit
//unsigned char DHT11_ReadByte()
//{
// int i;
// unsigned char tmp = 0;// 0000 0000
// for(i=0; i<8; i++)
// {
// //?????????
// while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 0);
//
// //???0??1
// delay_us(30);
//
// if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1)//?1
// {
// tmp |= 0x01<<(7-i);
// while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) == 1);//?????????
// }
//
//
// }
//
// return tmp; //??????????
//
//}
//u8 d=0;
//unsigned char DHT11_Data[5];
//int i;
//void DHT11_ReadData() //?????40bit???
//{
// unsigned char DHT11_Data[5];
//
// DHT11_Start();//1,STM32??????
//
// DHT11_SlaveResp();//2,??DHT11????
//
// DHT11_Data[0] = DHT11_ReadByte();//3,??5??????
// DHT11_Data[1] = DHT11_ReadByte();
// DHT11_Data[2] = DHT11_ReadByte();
// DHT11_Data[3] = DHT11_ReadByte();
// DHT11_Data[4] = DHT11_ReadByte();
//
// if(DHT11_Data[0] + DHT11_Data[1]+ DHT11_Data[2]+ DHT11_Data[3] != DHT11_Data[4])//4,????? DHT11_Data[0] + DHT11_Data[1]+ DHT11_Data[2]+ DHT11_Data[3] = DHT11_Data[4]
// {
// while(1)
// {
//
// GPIO_SetBits(GPIOA, GPIO_Pin_8);
// delay_s1(10);
// GPIO_ResetBits(GPIOA, GPIO_Pin_8);
// }
// }
//
// if(DHT11_Data[0]> 60)//5????,????
// {
// GPIO_ResetBits(GPIOD, GPIO_Pin_2);
// //GPIO_SetBits(GPIOB, GPIO_Pin_7);
// }
// if(DHT11_Data[2] > 30)
// {
// GPIO_ResetBits(GPIOD, GPIO_Pin_1);
//// GPIO_SetBits(GPIOB, GPIO_Pin_7);
// }
//}
|