AM2301.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #ifndef AM2301_H_
  2. #define AM2301_H_
  3. #include <stdint.h>
  4. #include "common_config.h"
  5. #include "stm32f4xx.h"
  6. /* Настройки */
  7. #define DHT_TIMEOUT 10000 //Количество итераций, после которых функция вернёт пустые значения
  8. #define DHT_POLLING_CONTROL 1 //Включение проверки частоты опроса датчика
  9. #define DHT_POLLING_INTERVAL_DHT11 2000 //Интервал опроса DHT11 (0.5 Гц по даташиту). Можно поставить 1500, будет работать
  10. #define DHT_POLLING_INTERVAL_DHT22 1000 //Интервал опроса DHT22 (1 Гц по даташиту)
  11. //#define DHT_IRQ_CONTROL //Выключать прерывания во время обмена данных с датчиком
  12. typedef enum
  13. {
  14. CONNECTION_ERR = 0,
  15. READ_ERR,
  16. PARITY_ERR,
  17. CONNECTION_OK,
  18. DATA_OK,
  19. } AM2301_t;
  20. /* Структура возвращаемых датчиком данных */
  21. typedef struct {
  22. float hum;
  23. float temp;
  24. uint8_t ErrorCycle; // Счетчик ошибок циклов преобразования температуры
  25. uint8_t SensorState; // Состояние датчика (0 - датчик работает, 1 - неисправность)
  26. } at2301_data_t;
  27. /* Структура объекта датчика */
  28. typedef struct {
  29. gpio_t ow_pin;
  30. IRQn_Type irq;
  31. } at2301_sensor;
  32. extern at2301_data_t sAM2301Sensorsdata[MAX_T_SENSORS];
  33. void DHT_Task_Init(void);
  34. #endif