#ifndef AM2301_H_ #define AM2301_H_ #include #include "common_config.h" #include "stm32f4xx.h" /* Настройки */ #define DHT_TIMEOUT 10000 //Количество итераций, после которых функция вернёт пустые значения #define DHT_POLLING_CONTROL 1 //Включение проверки частоты опроса датчика #define DHT_POLLING_INTERVAL_DHT11 2000 //Интервал опроса DHT11 (0.5 Гц по даташиту). Можно поставить 1500, будет работать #define DHT_POLLING_INTERVAL_DHT22 1000 //Интервал опроса DHT22 (1 Гц по даташиту) //#define DHT_IRQ_CONTROL //Выключать прерывания во время обмена данных с датчиком typedef enum { CONNECTION_ERR = 0, READ_ERR, PARITY_ERR, CONNECTION_OK, DATA_OK, } AM2301_t; /* Структура возвращаемых датчиком данных */ typedef struct { float hum; float temp; uint8_t ErrorCycle; // Счетчик ошибок циклов преобразования температуры uint8_t SensorState; // Состояние датчика (0 - датчик работает, 1 - неисправность) } at2301_data_t; /* Структура объекта датчика */ typedef struct { gpio_t ow_pin; IRQn_Type irq; } at2301_sensor; extern at2301_data_t sAM2301Sensorsdata[MAX_T_SENSORS]; void DHT_Task_Init(void); #endif