20260106:移植了野火的ESP-01s驱动代码,初步实现功能。

This commit is contained in:
2026-01-06 01:22:02 +08:00
parent bd85b7395e
commit 2e6795f988
26 changed files with 1770 additions and 605 deletions

View File

@@ -1,129 +1,159 @@
#include "DHT11.h"
//<2F><>λDHT11
void vDht11Rst(void)
{
vDht11Mode(OUT); //SET OUTPUT
DHT11_Low; //<2F><><EFBFBD><EFBFBD>DQ
vDelayMs(20); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>18~30ms
DHT11_High; //DQ=1
vDelayUs(13); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10~35us
}
//<2F>ȴ<EFBFBD>DHT11<31>Ļ<EFBFBD>Ӧ
//<2F><><EFBFBD><EFBFBD>1:δ<><CEB4><EFBFBD>⵽DHT11<31>Ĵ<EFBFBD><C4B4><EFBFBD>
//<2F><><EFBFBD><EFBFBD>0:<3A><><EFBFBD><EFBFBD>
uint8_t vDht11Check(void)
{
uint8_t retry=0;
vDht11Mode(IN);//SET INPUT
while (GPIO_ReadInputDataBit(DHT11_GPIO_PORT,DHT11_GPIO_PIN)&&retry<100)//DHT11<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>40~80us
{
retry++;
vDelayUs(1);
};
if(retry>=100)return 1;
else retry=0;
while (!GPIO_ReadInputDataBit(DHT11_GPIO_PORT,DHT11_GPIO_PIN)&&retry<100)//DHT11<31><31><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD>40~80us
{
retry++;
vDelayUs(1);
};
if(retry>=100)return 1;
return 0;
}
//<2F><>DHT11<31><31>ȡһ<C8A1><D2BB>λ
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>1/0
uint8_t vDht11ReadBit(void)
{
uint8_t retry=0;
while(GPIO_ReadInputDataBit(DHT11_GPIO_PORT,DHT11_GPIO_PIN)&&retry<100)//<2F>ȴ<EFBFBD><C8B4><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ
{
retry++;
vDelayUs(1);
}
retry=0;
while(!GPIO_ReadInputDataBit(DHT11_GPIO_PORT,DHT11_GPIO_PIN)&&retry<100)//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
{
retry++;
vDelayUs(1);
}
vDelayUs(40);//<2F>ȴ<EFBFBD>40us
if(GPIO_ReadInputDataBit(DHT11_GPIO_PORT,DHT11_GPIO_PIN))return 1;
else return 0;
}
//<2F><>DHT11<31><31>ȡһ<C8A1><D2BB><EFBFBD>ֽ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t vDht11ReadByte(void)
{
uint8_t i,dat;
dat=0;
for (i=0;i<8;i++)
{
dat<<=1;
dat|=vDht11ReadBit();
}
return dat;
}
//<2F><>DHT11<31><31>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//temp:<3A><EFBFBD>ֵ(<28><>Χ:0~50<35><30>)
//humi:ʪ<><CAAA>ֵ(<28><>Χ:20%~90%)
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0,<2C><><EFBFBD><EFBFBD>;1,<2C><>ȡʧ<C8A1><CAA7>
uint8_t vDht11ReadData(uint8_t *pucTemp,uint8_t *pucHumi)
{
uint8_t ucBuffer[5];
uint8_t i;
vDht11Rst();
if(vDht11Check()==0)
{
for(i=0;i<5;i++)//<2F><>ȡ40λ<30><CEBB><EFBFBD><EFBFBD>
{
ucBuffer[i]=vDht11ReadByte();
}
if((ucBuffer[0]+ucBuffer[1]+ucBuffer[2]+ucBuffer[3])==ucBuffer[4])
{
*pucHumi=ucBuffer[0];
*pucTemp=ucBuffer[2];
}
}
else return 1;
return 0;
}
//<2F><>ʼ<EFBFBD><CABC>DHT11<31><31>IO<49><4F> DQ ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>DHT11<31>Ĵ<EFBFBD><C4B4><EFBFBD>
//<2F><><EFBFBD><EFBFBD>1:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>0:<3A><><EFBFBD><EFBFBD>
uint8_t vDht11Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(DHT11_GPIO_CLK, ENABLE); //ʹ<><CAB9>PA<50>˿<EFBFBD>ʱ<EFBFBD><CAB1>
GPIO_InitStructure.GPIO_Pin = DHT11_GPIO_PIN; //PG11<31>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStructure); //<2F><>ʼ<EFBFBD><CABC>IO<49><4F>
GPIO_SetBits(DHT11_GPIO_PORT,DHT11_GPIO_PIN); //PG11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vDht11Rst(); //<2F><>λDHT11
return vDht11Check();//<2F>ȴ<EFBFBD>DHT11<31>Ļ<EFBFBD>Ӧ
}
/**
* @brief DHT11<31><31><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
* @note <20><><EFBFBD><EFBFBD>DHT11<31><31>IO<49><4F>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>
* @param ucMode ģʽѡ<CABD><D1A1><EFBFBD><EFBFBD><31><CEAA><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><30><CEAA><EFBFBD><EFBFBD>ģʽ
* @retval None
*/
void vDht11Mode(uint8_t ucMode)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
if(ucMode)
{
GPIO_InitStructure.GPIO_Pin = DHT11_GPIO_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
}
else
{
GPIO_InitStructure.GPIO_Pin = DHT11_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
}
GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStructure);
if(ucMode)
{
GPIO_InitStructure.GPIO_Pin = DHT11_GPIO_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
}
else
{
GPIO_InitStructure.GPIO_Pin = DHT11_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
}
GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStructure);
}
/**
* @brief DHT11<31><31>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
* @note <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DHT11<31><31><EFBFBD>͸<EFBFBD>λ<EFBFBD>źţ<C5BA>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
* @param None
* @retval None
*/
void vDht11Rst(void)
{
vDht11Mode(DHT11_MODE_OUT); // SET OUTPUT
DHT11_Low; // <20><><EFBFBD><EFBFBD>DQ
vDelayMs(20); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>18~30ms
DHT11_High; // DQ=1
vDelayUs(13); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10~35us
}
/**
* @brief DHT11<31><31><EFBFBD><EFBFBD><E9BAAF>
* @note <20><><EFBFBD><EFBFBD>DHT11<31>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ӧ<EFBFBD>ź<EFBFBD><C5BA>жϡ<D0B6>
* @param None
* @retval 0:<3A><><EFBFBD><EFBFBD> 1:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
uint8_t vDht11Check(void)
{
uint8_t retry=0;
vDht11Mode(DHT11_MODE_IN);//SET INPUT
while (GPIO_ReadInputDataBit(DHT11_GPIO_PORT, DHT11_GPIO_PIN)&&retry<100) // DHT11<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>40~80us
{
retry++;
vDelayUs(1);
};
if(retry>=100)
return 1;
else retry=0;
while (!GPIO_ReadInputDataBit(DHT11_GPIO_PORT, DHT11_GPIO_PIN)&&retry<100) // DHT11<31><31><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD>40~80us
{
retry++;
vDelayUs(1);
};
if(retry>=100)
return 1;
return 0;
}
/**
* @brief DHT11<31><31>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <20><>ʼ<EFBFBD><CABC>DHT11<31><31>IO<49>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DHT11<31>Ĵ<EFBFBD><C4B4>ڡ<EFBFBD>
* @param None
* @retval 0:<3A><><EFBFBD><EFBFBD>;1:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
uint8_t vDht11Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(DHT11_GPIO_CLK, ENABLE); // ʹ<><CAB9>PA<50>˿<EFBFBD>ʱ<EFBFBD><CAB1>
GPIO_InitStructure.GPIO_Pin = DHT11_GPIO_PIN; // PG11<31>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStructure); // <20><>ʼ<EFBFBD><CABC>IO<49><4F>
GPIO_SetBits(DHT11_GPIO_PORT, DHT11_GPIO_PIN); // PG11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vDht11Rst(); // <20><>λDHT11
return vDht11Check(); // <20>ȴ<EFBFBD>DHT11<31>Ļ<EFBFBD>Ӧ
}
/**
* @brief DHT11<31><31>ȡλ<C8A1><CEBB><EFBFBD><EFBFBD>
* @note <20><>DHT11<31><31>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>1<EFBFBD><31>
* @param None
* @retval <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>λֵ<CEBB><D6B5>1<EFBFBD><31>0
*/
uint8_t vDht11ReadBit(void)
{
uint8_t retry=0;
while(GPIO_ReadInputDataBit(DHT11_GPIO_PORT, DHT11_GPIO_PIN)&&retry<100) // <20>ȴ<EFBFBD><C8B4><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ
{
retry++;
vDelayUs(1);
}
retry=0;
while(!GPIO_ReadInputDataBit(DHT11_GPIO_PORT, DHT11_GPIO_PIN)&&retry<100) // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
{
retry++;
vDelayUs(1);
}
vDelayUs(40);//<2F>ȴ<EFBFBD>40us
if(GPIO_ReadInputDataBit(DHT11_GPIO_PORT, DHT11_GPIO_PIN))
return 1;
else return 0;
}
/**
* @brief DHT11<31><31>ȡ<EFBFBD>ֽں<D6BD><DABA><EFBFBD>
* @note <20><>DHT11<31><31>ȡһ<C8A1><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݣ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ8<C8A1><38>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><CFB3>ֽڡ<D6BD>
* @param None
* @retval <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
*/
uint8_t vDht11ReadByte(void)
{
uint8_t i, dat;
dat=0;
for (i=0;i<8;i++)
{
dat<<=1;
dat|=vDht11ReadBit();
}
return dat;
}
/** @brief DHT11<31><31>ȡ<EFBFBD><C8A1><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>
* @note <20><>DHT11<31><31>ȡ<EFBFBD>¶Ⱥ<C2B6>ʪ<EFBFBD><CAAA><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
* @param *pucTemp ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD>ݵı<DDB5><C4B1><EFBFBD>ָ<EFBFBD><D6B8>
* @param *pucHumi ָ<><D6B8><EFBFBD>洢ʪ<E6B4A2><CAAA><EFBFBD><EFBFBD><EFBFBD>ݵı<DDB5><C4B1><EFBFBD>ָ<EFBFBD><D6B8>
* @retval 0:<3A><><EFBFBD><EFBFBD>;1:<3A><>ȡʧ<C8A1><CAA7>
*/
uint8_t vDht11ReadData(uint8_t *pucTemp, uint8_t *pucHumi)
{
uint8_t ucBuffer[5];
uint8_t i;
vDht11Rst();
if(vDht11Check()==0)
{
for(i=0;i<5;i++)//<2F><>ȡ40λ<30><CEBB><EFBFBD><EFBFBD>
{
ucBuffer[i]=vDht11ReadByte();
}
if((ucBuffer[0]+ucBuffer[1]+ucBuffer[2]+ucBuffer[3])==ucBuffer[4])
{
*pucHumi=ucBuffer[0];
*pucTemp=ucBuffer[2];
}
}
else return 1;
return 0;
}

View File

@@ -10,23 +10,23 @@
#define DHT11_GPIO_PIN GPIO_Pin_1
/* <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD> */
#define OUT 1
#define IN 0
#define DHT11_MODE_OUT 1
#define DHT11_MODE_IN 0
/* <20><><EFBFBD><EFBFBD>DHT11<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ͵<DFB5>ƽ */
#define DHT11_Low GPIO_ResetBits(DHT11_GPIO_PORT,DHT11_GPIO_PIN)
#define DHT11_High GPIO_SetBits(DHT11_GPIO_PORT,DHT11_GPIO_PIN)
#define DHT11_Low GPIO_ResetBits(DHT11_GPIO_PORT, DHT11_GPIO_PIN)
#define DHT11_High GPIO_SetBits(DHT11_GPIO_PORT, DHT11_GPIO_PIN)
typedef struct {
uint8_t ucTemp;
uint8_t ucHumi;
} DHT11Data_t;
void vDht11Rst(void);//<2F><>λDHT11
uint8_t vDht11Check(void);//<2F><><EFBFBD><EFBFBD>DHT11
uint8_t vDht11ReadBit(void);//<2F><>ȡһλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t vDht11ReadByte(void);//<2F><>ȡһ<C8A1><D2BB><EFBFBD>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
uint8_t vDht11ReadData(uint8_t *pucTemp,uint8_t *pucHumi);//<2F><>ȡ<EFBFBD><EFBFBD>ʪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t vDht11Init(void);//<2F><>ʼ<EFBFBD><EFBFBD>DHT11
void vDht11Mode(uint8_t ucMode);//DHT11<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void vDht11Mode(uint8_t ucMode); // DHT11<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
void vDht11Rst(void); // <EFBFBD><EFBFBD>λDHT11
uint8_t vDht11Init(void); // <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>DHT11
uint8_t vDht11Check(void); // <20><><EFBFBD><EFBFBD>DHT11
uint8_t vDht11ReadBit(void); // <EFBFBD><EFBFBD>ȡһλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t vDht11ReadByte(void); // <EFBFBD><EFBFBD>ȡһ<EFBFBD><EFBFBD><EFBFBD>ֽڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t vDht11ReadData(uint8_t *pucTemp, uint8_t *pucHumi); // <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ʪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endif

View File

@@ -5,7 +5,6 @@
#include "stm32f10x.h" // Device header
#define LED_PC13_WORK_MODE LIGHT_MODE
#define STM32_STATE_MODE 0
#define LIGHT_MODE 1

View File

@@ -24,7 +24,7 @@ void vLoRaConnectionPkt(uint8_t ucNodeId)
vUsartSendArray(USART3, (uint8_t *)&xLoRaGateConfig, 3);
}
}
/**
* @brief LoRa<52><61><EFBFBD>ͽڵ<CDBD>ID<49><44><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>ͽڵ<CDBD>ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ʲô<CAB2>ڵ㡣

View File

@@ -6,8 +6,8 @@
#define LORA_IS_GATEWAY_NODE 0
#define LORA_GPIO_PIN_TX GPIO_Pin_10
#define LORA_GPIO_PIN_RX GPIO_Pin_11
#define LORA_GPIO_PIN_ATK_AUX GPIO_Pin_4 //PA4
#define LORA_GPIO_PIN_ATK_MD0 GPIO_Pin_3 //PB3
#define LORA_GPIO_PIN_ATK_AUX GPIO_Pin_4 //PA4
#define LORA_GPIO_PIN_ATK_MD0 GPIO_Pin_3 //PB3
#define LORA_GATE_ADDR_HIGH 0x03
#define LORA_GATE_ADDR_LOW 0xE9
#define LORA_GATE_CHANNEL 0x17

View File

@@ -1,5 +1,11 @@
#include "Relay.h"
/**
* @brief PA0????????
* @note ???PA0???????????????????????
* @param None
* @retval None
*/
void vPa0RelayInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
@@ -13,11 +19,23 @@ void vPa0RelayInit(void)
vPa0RelayOff();
}
/**
* @brief PA0???????
* @note ?PA0???????????????
* @param None
* @retval None
*/
void vPa0RelayOn(void)
{
GPIO_SetBits(PA0_RELAY_GPIO_PORT,PA0_RELAY_GPIO_PIN);
}
/**
* @brief PA0???????
* @note ?PA0???????????????
* @param None
* @retval None
*/
void vPa0RelayOff()
{
GPIO_ResetBits(PA0_RELAY_GPIO_PORT,PA0_RELAY_GPIO_PIN);