20260106:移植了野火的ESP-01s驱动代码,初步实现功能。
This commit is contained in:
@@ -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>1Ϊ<31><CEAA><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>0Ϊ<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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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>ڵ㡣
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -2,40 +2,40 @@
|
||||
|
||||
#if MODE == USE_SYS_TICK
|
||||
|
||||
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ӳٺ<D3B3><D9BA><EFBFBD>
|
||||
//SYSTICK<43><4B>ʱ<EFBFBD>ӹ̶<D3B9>ΪAHBʱ<42>ӵ<EFBFBD>1/8
|
||||
//SYSCLK:ϵͳʱ<CDB3><CAB1>Ƶ<EFBFBD><C6B5>
|
||||
/**
|
||||
* @brief <20><>ʼ<EFBFBD><CABC><EFBFBD>ӳٺ<D3B3><D9BA><EFBFBD>
|
||||
* @note <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>SYSTICK<43><4B>ʱ<EFBFBD>ӹ̶<D3B9>ΪAHBʱ<42>ӵ<EFBFBD>1/8<><38>SYSCLK:ϵͳʱ<CDB3><CAB1>Ƶ<EFBFBD><C6B5>
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void vDelayInit(void)
|
||||
{
|
||||
uint8_t ucSYSCLK;
|
||||
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
|
||||
xUcFacInit.ucFacUs=ucSYSCLK/8;
|
||||
xUcFacInit.usFacMs=(uint16_t)xUcFacInit.ucFacUs*1000;
|
||||
}
|
||||
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
|
||||
xUcFacInit.ucFacUs=ucSYSCLK/8;
|
||||
xUcFacInit.usFacMs=(uint16_t)xUcFacInit.ucFacUs*1000;
|
||||
}
|
||||
|
||||
//<2F><>ʱnus
|
||||
//nusΪҪ<CEAA><D2AA>ʱ<EFBFBD><CAB1>us<75><73>.
|
||||
/**
|
||||
* @brief <>뼶<EFBFBD><EBBCB6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ16777215us
|
||||
* @param ulNus: <20><>ʱ<EFBFBD><CAB1><EFBFBD><CEA2><EFBFBD><EFBFBD>
|
||||
* @retval None
|
||||
*/
|
||||
void vDelayUs(uint32_t ulNus)
|
||||
{
|
||||
uint32_t ulTemp;
|
||||
SysTick->LOAD=ulNus*xUcFacInit.ucFacUs; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SysTick->VAL=0x00; //<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
SysTick->LOAD=ulNus*xUcFacInit.ucFacUs; // ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SysTick->VAL=0x00; // <EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; // <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
do
|
||||
{
|
||||
ulTemp=SysTick->CTRL;
|
||||
} while((ulTemp&0x01)&&!(ulTemp&(1<<16))); //<2F>ȴ<EFBFBD>ʱ<EFBFBD>䵽<EFBFBD><E4B5BD>
|
||||
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //<2F>رռ<D8B1><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
SysTick->VAL =0x00; //<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
} while((ulTemp&0x01)&&!(ulTemp&(1<<16))); // <EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD>䵽<EFBFBD><EFBFBD>
|
||||
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; // <EFBFBD>رռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SysTick->VAL =0x00; // <EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
//<2F><>ʱnms
|
||||
//ע<><D7A2>nms<6D>ķ<EFBFBD>Χ
|
||||
//SysTick->LOADΪ24λ<34>Ĵ<EFBFBD><C4B4><EFBFBD>,<2C><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱΪ:
|
||||
//nms<=0xffffff*8*1000/SYSCLK
|
||||
//SYSCLK<4C><4B>λΪHz,nms<6D><73>λΪms
|
||||
//<2F><>72M<32><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,nms<=1864
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>뼶<EFBFBD><EBBCB6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD>Systick<63><6B>ʱ<EFBFBD><CAB1>Ϊ24λ<34><CEBB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ֵΪ0xFFFFFF<46><46>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>16777215<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>0xFFFFFF<46><46><EFBFBD><EFBFBD>ʵ<EFBFBD>ʼ<EFBFBD><CABC>ص<EFBFBD>ֵ<EFBFBD><D6B5>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD>̡<EFBFBD>
|
||||
@@ -66,62 +66,67 @@ void vDelayMs(uint16_t usNms)
|
||||
|
||||
#elif MODE == USE_DWT
|
||||
|
||||
/**
|
||||
* @brief DWT<57><54>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
* @note DWT<57><54>ʱ<EFBFBD><CAB1><EFBFBD>ȸߣ<C8B8><DFA3>ʺ϶<CABA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void vDelayInit(void)
|
||||
{
|
||||
//ʹ<><CAB9>DWT<57><54><EFBFBD><EFBFBD>
|
||||
DEMCR |= (uint32_t)TRCENA;
|
||||
|
||||
//DWT CYCCNT<4E>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
||||
DWT_CYCCNT = (uint32_t)0u;
|
||||
|
||||
//ʹ<><CAB9>Cortex-M3 DWT CYCCNT<4E>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
DWT_CTRL |= (uint32_t)DWT_CTRL_CYCCNTENA;
|
||||
DEMCR |= (uint32_t)TRCENA; // ʹ<EFBFBD><EFBFBD>DWT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
DWT_CYCCNT = (uint32_t)0u; // CYCCNT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
DWT_CTRL |= (uint32_t)DWT_CTRL_CYCCNTENA; // ʹ<><CAB9>CYCCNT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
// <><CEA2><EFBFBD><EFBFBD>ʱ
|
||||
/**
|
||||
* @brief <>뼶<EFBFBD><EBBCB6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ10000us
|
||||
* @param ulNus: <20><>ʱ<EFBFBD><CAB1><EFBFBD><CEA2><EFBFBD><EFBFBD>
|
||||
* @retval None
|
||||
*/
|
||||
void vDelayUs(uint32_t ulNus)
|
||||
{
|
||||
if(ulNus > 10000) ulNus = 10000;
|
||||
|
||||
uint32_t ulTicksStart, ulTicksEnd, ulTicksDelay;
|
||||
|
||||
ulTicksStart = DWT_CYCCNT;
|
||||
ulTicksDelay = ( ulNus * ( SystemCoreClock / (1000000) ) ); // <20><><EFBFBD><CEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵδ<C9B5><CEB4><EFBFBD>
|
||||
ulTicksEnd = ulTicksStart + ulTicksDelay;
|
||||
|
||||
// ulTicksEndû<64><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if ( ulTicksEnd >= ulTicksStart )
|
||||
/* <20><>ulTicksEndû<64><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ */
|
||||
if ( ulTicksEnd >= ulTicksStart )
|
||||
{
|
||||
// DWT_CYCCNT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(DWT_CYCCNT > ulTicksStart)
|
||||
if(DWT_CYCCNT > ulTicksStart) // DWT_CYCCNT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
while( DWT_CYCCNT < ulTicksEnd );
|
||||
}
|
||||
// DWT_CYCCNT<4E><54><EFBFBD><EFBFBD>
|
||||
else
|
||||
/* DWT_CYCCNT<4E><54><EFBFBD><EFBFBD>ʱ */
|
||||
else
|
||||
{
|
||||
// <20>Ѿ<EFBFBD><D1BE><EFBFBD>ʱ<EFBFBD><CAB1>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
|
||||
return;
|
||||
return; // <20>Ѿ<EFBFBD><D1BE><EFBFBD>ʱ<EFBFBD><CAB1>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
|
||||
}
|
||||
}
|
||||
else // ulTicksEnd<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/* <20><>ulTicksEnd<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ */
|
||||
else
|
||||
{
|
||||
// DWT_CYCCNT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(DWT_CYCCNT > ulTicksStart)
|
||||
/* DWT_CYCCNT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ */
|
||||
if(DWT_CYCCNT > ulTicksStart)
|
||||
{
|
||||
// <20>ȴ<EFBFBD>DWT_CYCCNT<4E><54>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
while( DWT_CYCCNT > ulTicksEnd );
|
||||
while( DWT_CYCCNT > ulTicksEnd ); // <20>ȴ<EFBFBD>DWT_CYCCNT<4E><54><EFBFBD><EFBFBD>
|
||||
}
|
||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DWT_CYCCNT<4E><54><EFBFBD><EFBFBD>ulTicksEnd
|
||||
while( DWT_CYCCNT < ulTicksEnd );
|
||||
while( DWT_CYCCNT < ulTicksEnd ); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DWT_CYCCNT<4E><54><EFBFBD><EFBFBD>ulTicksEnd
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>뼶<EFBFBD><EBBCB6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ65535ms
|
||||
* @param usNms: <20><>ʱ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @retval None
|
||||
*/
|
||||
void vDelayMs(uint16_t usNms)
|
||||
{
|
||||
for(uint16_t i = 0; i < usNms; i++)
|
||||
{
|
||||
// delay 1 ms
|
||||
vDelayUs(1000);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,15 +11,15 @@
|
||||
|
||||
// 0xE000EDFC DEMCR RW Debug Exception and Monitor Control Register.
|
||||
#define DEMCR ( *(__IO uint32_t *)0xE000EDFC )
|
||||
#define TRCENA ( 0x01 << 24) // DEMCR的DWT使能位
|
||||
#define DBGMCU_CR *(__IO uint32_t *)0xE0042004 //MCU调试模块控制寄存器,详细内容参考《stm32中文参考手册》调试支持(DBG)章节,747页
|
||||
#define TRCENA ( 0x01 << 24) // DEMCR的DWT使能位
|
||||
#define DBGMCU_CR *(__IO uint32_t *)0xE0042004 // MCU调试模块控制寄存器,详细内容参考《stm32中文参考手册》调试支持(DBG)章节,747页
|
||||
|
||||
// 0xE0001000 DWT_CTRL RW The Debug Watchpoint and Trace (DWT) unit
|
||||
#define DWT_CTRL ( *(__IO uint32_t *)0xE0001000 )
|
||||
#define DWT_CTRL_CYCCNTENA ( 0x01 << 0 ) // DWT的SYCCNT使能位
|
||||
#define DWT_CTRL_CYCCNTENA ( 0x01 << 0 ) // DWT的SYCCNT使能位
|
||||
|
||||
// 0xE0001004 DWT_CYCCNT RW Cycle Count register,
|
||||
#define DWT_CYCCNT ( *(__IO uint32_t *)0xE0001004) // 显示或设置处理器的周期计数值
|
||||
#define DWT_CYCCNT ( *(__IO uint32_t *)0xE0001004 ) // 显示或设置处理器的周期计数值
|
||||
|
||||
//#define DWT_DELAY_mS(mSec) DWT_DELAY_uS(mSec*1000)
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
||||
if (xUsartId == USART1)
|
||||
{
|
||||
/* code */
|
||||
RCC_APB2PeriphClockCmd(USART1_GPIO_CLOCK,ENABLE);
|
||||
RCC_APB2PeriphClockCmd(USART1_GPIO_CLOCK, ENABLE);
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||
@@ -26,15 +26,15 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
||||
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
|
||||
RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3>ͽ<EFBFBD><CDBD><EFBFBD>ģʽ
|
||||
USART_InitStructure.USART_Parity = USART_Parity_No; // <20><>У<EFBFBD><D0A3>λ
|
||||
USART_InitStructure.USART_StopBits = USART_StopBits_1; // һλֹͣλ
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // <20>ֳ<EFBFBD><D6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪУ<D2AA>飬<EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ѡ<EFBFBD><D1A1>8λ
|
||||
USART_Init(USART1,&USART_InitStructure);
|
||||
USART_Init(USART1, &USART_InitStructure);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4>ڵIJ<DAB5>ѯģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>NVIC
|
||||
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); // ѡ<><D1A1>RXNE<4E><45><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // ѡ<><D1A1>RXNE<4E><45><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // <20><><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD>4Ϊ4bit<69><74>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0bit<69><74>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0-15<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FreeRTOSû<53><C3BB><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>൱<EFBFBD><E0B5B1>4λ<34><CEBB>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0λ<30><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
|
||||
NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8>
|
||||
@@ -44,11 +44,11 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
||||
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // <20><>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
|
||||
NVIC_Init(&NVIC_InitStructure); // ָ<><D6B8>NVIC_InitStructure<72>ĵ<EFBFBD>ַ
|
||||
|
||||
USART_Cmd(USART1,ENABLE);
|
||||
USART_Cmd(USART1, ENABLE);
|
||||
} else if (xUsartId == USART2)
|
||||
{
|
||||
/* code */
|
||||
RCC_APB2PeriphClockCmd(USART2_GPIO_CLOCK,ENABLE);
|
||||
RCC_APB2PeriphClockCmd(USART2_GPIO_CLOCK, ENABLE);
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
@@ -60,15 +60,15 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
||||
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3>ͽ<EFBFBD><CDBD><EFBFBD>ģʽ
|
||||
USART_InitStructure.USART_Parity = USART_Parity_No; // <20><>У<EFBFBD><D0A3>λ
|
||||
USART_InitStructure.USART_StopBits = USART_StopBits_1; // һλֹͣλ
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // <20>ֳ<EFBFBD><D6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪУ<D2AA>飬<EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ѡ<EFBFBD><D1A1>8λ
|
||||
USART_Init(USART2,&USART_InitStructure);
|
||||
USART_Init(USART2, &USART_InitStructure);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4>ڵIJ<DAB5>ѯģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>NVIC
|
||||
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); // ѡ<><D1A1>RXNE<4E><45><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); // ѡ<><D1A1>RXNE<4E><45><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // <20><><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD>4Ϊ4bit<69><74>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0bit<69><74>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0-15<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FreeRTOSû<53><C3BB><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>൱<EFBFBD><E0B5B1>4λ<34><CEBB>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0λ<30><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
|
||||
NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8>
|
||||
@@ -82,7 +82,7 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
||||
} else if (xUsartId == USART3)
|
||||
{
|
||||
/* code */
|
||||
RCC_APB2PeriphClockCmd(USART3_GPIO_CLOCK,ENABLE);
|
||||
RCC_APB2PeriphClockCmd(USART3_GPIO_CLOCK, ENABLE);
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||
@@ -95,15 +95,15 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
|
||||
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
USART_InitStructure.USART_BaudRate = ulBaudrate; // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>USART_Init<69><74><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>9600<30><30>Ӧ<EFBFBD>ķ<EFBFBD>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>BRR<52>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3>ͽ<EFBFBD><CDBD><EFBFBD>ģʽ
|
||||
USART_InitStructure.USART_Parity = USART_Parity_No; // <20><>У<EFBFBD><D0A3>λ
|
||||
USART_InitStructure.USART_StopBits = USART_StopBits_1; // һλֹͣλ
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // <20>ֳ<EFBFBD><D6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪУ<D2AA>飬<EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ѡ<EFBFBD><D1A1>8λ
|
||||
USART_Init(USART3,&USART_InitStructure);
|
||||
USART_Init(USART3, &USART_InitStructure);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4>ڵIJ<DAB5>ѯģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>NVIC
|
||||
USART_ITConfig(USART3,USART_IT_RXNE,ENABLE); // ѡ<><D1A1>RXNE<4E><45><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); // ѡ<><D1A1>RXNE<4E><45><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXNE<4E><45>־λ<D6BE><CEBB>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>NVIC<49><43><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // <20><><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD>4Ϊ4bit<69><74>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0bit<69><74>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0-15<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FreeRTOSû<53><C3BB><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>൱<EFBFBD><E0B5B1>4λ<34><CEBB>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>0λ<30><CEBB>Ӧ<EFBFBD><D3A6><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
|
||||
NVIC_InitTypeDef NVIC_InitStructure; // <20><>ʼ<EFBFBD><CABC>NVIC<49><43>USART1ͨ<31><CDA8>
|
||||
@@ -220,13 +220,12 @@ void USART1_IRQHandler(void)
|
||||
{
|
||||
/* code */
|
||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART1);
|
||||
#if (USE_SYSTEM == NONE)
|
||||
#elif (USE_SYSTEM == FREERTOS)
|
||||
#if (USE_RTOS == NONE)
|
||||
#elif (USE_RTOS == FREERTOS)
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
xQueueSendFromISR(xQueueUsart1IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||
#elif (USE_SYSTEM == OSAL)
|
||||
#endif
|
||||
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
||||
}
|
||||
@@ -244,13 +243,12 @@ void USART2_IRQHandler(void)
|
||||
{
|
||||
/* code */
|
||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART2);
|
||||
#if (USE_SYSTEM == NONE)
|
||||
#elif (USE_SYSTEM == FREERTOS)
|
||||
#if (USE_RTOS == NONE)
|
||||
#elif (USE_RTOS == FREERTOS)
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||
#elif (USE_SYSTEM == OSAL)
|
||||
#endif
|
||||
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
|
||||
}
|
||||
@@ -268,13 +266,12 @@ void USART3_IRQHandler(void)
|
||||
{
|
||||
/* code */
|
||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
|
||||
#if (USE_SYSTEM == NONE)
|
||||
#elif (USE_SYSTEM == FREERTOS)
|
||||
#if (USE_RTOS == NONE)
|
||||
#elif (USE_RTOS == FREERTOS)
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||
#elif (USE_SYSTEM == OSAL)
|
||||
#endif
|
||||
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef __USART_H__
|
||||
#define __USART_H__
|
||||
|
||||
#define USE_SYSTEM FREERTOS
|
||||
#define USE_RTOS FREERTOS
|
||||
#define NONE 0
|
||||
#define FREERTOS 1
|
||||
#define OSAL 2
|
||||
@@ -21,11 +21,10 @@
|
||||
#define USART3_GPIO_PIN_TX GPIO_Pin_10
|
||||
#define USART3_GPIO_PIN_RX GPIO_Pin_11
|
||||
|
||||
#if (USE_SYSTEM == NONE)
|
||||
#elif (USE_SYSTEM == FREERTOS)
|
||||
#if (USE_RTOS == NONE)
|
||||
#elif (USE_RTOS == FREERTOS)
|
||||
#include "FreeRTOS.h"
|
||||
#include "queue.h"
|
||||
#elif (USE_SYSTEM == OSAL)
|
||||
#endif
|
||||
|
||||
#include "stm32f10x.h" // Device header
|
||||
@@ -33,12 +32,11 @@
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#if (USE_SYSTEM == NONE)
|
||||
#elif (USE_SYSTEM == FREERTOS)
|
||||
#if (USE_RTOS == NONE)
|
||||
#elif (USE_RTOS == FREERTOS)
|
||||
extern QueueHandle_t xQueueUsart1IrqHdlr;
|
||||
extern QueueHandle_t xQueueUsart2IrqHdlr;
|
||||
extern QueueHandle_t xQueueUsart3IrqHdlr;
|
||||
#elif (USE_SYSTEM == OSAL)
|
||||
#endif
|
||||
|
||||
void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate);
|
||||
|
||||
@@ -30,7 +30,12 @@ SemaphoreHandle_t xSemLedOffHdlr;
|
||||
SemaphoreHandle_t xSemFanOnHdlr;
|
||||
SemaphoreHandle_t xSemFanOffHdlr;
|
||||
|
||||
/* <20><>˸LED<45><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD>NULL<4C><4C> */
|
||||
/**
|
||||
* @brief LED״ָ̬ʾ<D6B8><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note ͨ<><CDA8>LED<45><44><EFBFBD><EFBFBD>˸״ָ̬ʾϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
||||
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δʹ<CEB4>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C>
|
||||
* @retval None
|
||||
*/
|
||||
void vTaskStateLed(void *pvParameters)
|
||||
{
|
||||
while(1)
|
||||
@@ -42,6 +47,12 @@ void vTaskStateLed(void *pvParameters)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LED<45><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LED<45>Ŀ<EFBFBD><C4BF><EFBFBD>״̬<D7B4><CCAC>
|
||||
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δʹ<CEB4>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C>
|
||||
* @retval None
|
||||
*/
|
||||
void vTaskLedControl(void *pvParameters)
|
||||
{
|
||||
while (1)
|
||||
@@ -60,6 +71,12 @@ void vTaskLedControl(void *pvParameters)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>ȵĿ<C8B5><C4BF><EFBFBD>״̬<D7B4><CCAC>
|
||||
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δʹ<CEB4>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C>
|
||||
* @retval None
|
||||
*/
|
||||
void vTaskFanControl(void *pvParameters)
|
||||
{
|
||||
while (1)
|
||||
@@ -76,6 +93,12 @@ void vTaskFanControl(void *pvParameters)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief DHT11<31><31><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD>ڶ<EFBFBD>ȡDHT11<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶Ⱥ<C2B6>ʪ<EFBFBD><CAAA><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>͵<EFBFBD><CDB5><EFBFBD>Ӧ<EFBFBD>Ķ<EFBFBD><C4B6>С<EFBFBD>
|
||||
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δʹ<CEB4>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C>
|
||||
* @retval None
|
||||
*/
|
||||
void vTaskDht11(void *pvParameters)
|
||||
{
|
||||
DHT11Data_t xDHT11Data;
|
||||
@@ -106,6 +129,12 @@ void vTaskDht11(void *pvParameters)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LoRa<52><61><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD>ʪ<EFBFBD>ȶ<EFBFBD><C8B6>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ͨ<EFBFBD><CDA8>LoRaģ<61>鷢<EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ء<EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>źš<C5BA>
|
||||
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δʹ<CEB4>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C>
|
||||
* @retval None
|
||||
*/
|
||||
void vTaskLoRaToGatePkt(void *pvParameters)
|
||||
{
|
||||
uint8_t ucRecTempData = 0, ucRecHumiData = 0;
|
||||
@@ -145,6 +174,12 @@ void vTaskLoRaToGatePkt(void *pvParameters)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LoRa<52><61>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><>USART3<54><33><EFBFBD><EFBFBD>LoRaģ<61>鴫<EFBFBD><E9B4AB><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
||||
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δʹ<CEB4>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>NULL<4C><4C>
|
||||
* @retval None
|
||||
*/
|
||||
void vTaskLoRaMsgRec(void *pvParameters)
|
||||
{
|
||||
uint8_t ucDataRecNodeId = 0, ucDataRecExeId = 0, ucDataRecExeSta = 0;
|
||||
@@ -179,6 +214,12 @@ void vTaskLoRaMsgRec(void *pvParameters)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>FreeRTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void vCreateTasksList(void)
|
||||
{
|
||||
// #if defined __LED_H__
|
||||
@@ -237,6 +278,12 @@ void vCreateTasksList(void)
|
||||
// #endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>FreeRTOS<4F><53><EFBFBD>С<EFBFBD>
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void vCreateQueuesList(void)
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ƕ<EFBFBD><C7B6>еij<D0B5><C4B3><EFBFBD>,Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>Ŷ<EFBFBD><C5B6>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
||||
@@ -258,6 +305,12 @@ void vCreateQueuesList(void)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>FreeRTOS<4F>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void vCreateSemaphoresList(void)
|
||||
{
|
||||
xSemLedOnHdlr = xSemaphoreCreateBinary();
|
||||
@@ -266,6 +319,12 @@ void vCreateSemaphoresList(void)
|
||||
xSemFanOffHdlr = xSemaphoreCreateBinary();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><>ʼ<EFBFBD><CABC>ϵͳ<CFB5><CDB3>ģ<EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A3ACB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
int main(void)
|
||||
{
|
||||
vFanRelayInit();
|
||||
|
||||
Reference in New Issue
Block a user