/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.h * @brief : Header for main.c file. * This file contains the common defines of the application. ****************************************************************************** * @attention * *

© Copyright (c) 2021 STMicroelectronics. * All rights reserved.

* * This software component is licensed by ST under BSD 3-Clause license, * the "License"; You may not use this file except in compliance with the * License. You may obtain a copy of the License at: * opensource.org/licenses/BSD-3-Clause * ****************************************************************************** */ /* USER CODE END Header */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __MAIN_H #define __MAIN_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "stm32g0xx_ll_dma.h" #include "stm32g0xx.h" #include "stm32g0xx_ll_i2c.h" #include "stm32g0xx_ll_rcc.h" #include "stm32g0xx_ll_bus.h" #include "stm32g0xx_ll_system.h" #include "stm32g0xx_ll_exti.h" #include "stm32g0xx_ll_cortex.h" #include "stm32g0xx_ll_utils.h" #include "stm32g0xx_ll_pwr.h" #include "stm32g0xx_ll_spi.h" #include "stm32g0xx_ll_tim.h" #include "stm32g0xx_ll_gpio.h" #include "stm32g0xx_ll_usart.h" #if defined(USE_FULL_ASSERT) #include "stm32_assert.h" #endif /* USE_FULL_ASSERT */ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "gpio.h" #include "ds3231.h" #include "bme280.h" #include "rtos.h" #include "event-system.h" #include "list_event.h" /* USER CODE END Includes */ /* Exported types ------------------------------------------------------------*/ /* USER CODE BEGIN ET */ typedef enum { DOWN = 0, UP = 1 } updown_t; typedef enum { OFF = 0, ON = 1 } onoff_t; volatile struct { uint32_t RTC_IRQ: 1; uint32_t SPI_TX_End: 1; uint32_t I2C_TX_End: 1; uint32_t I2C_RX_End: 1; uint32_t I2C_TX_Err: 1; uint32_t I2C_RX_Err: 1; uint32_t BME280: 1; uint32_t _reserv: 25; } Flag; typedef union { uint16_t u16; // element specifier for accessing whole u16 int16_t i16; // element specifier for accessing whole i16 struct { #ifdef LITTLE_ENDIAN // Byte-order is little endian uint8_t u8L; // element specifier for accessing low u8 uint8_t u8H; // element specifier for accessing high u8 #else // Byte-order is big endian uint8_t u8H; // element specifier for accessing low u8 uint8_t u8L; // element specifier for accessing high u8 #endif } s16; // element spec. for acc. struct with low or high u8 } nt16_t; typedef union { uint32_t u32; // element specifier for accessing whole u32 int32_t i32; // element specifier for accessing whole i32 struct { #ifdef LITTLE_ENDIAN // Byte-order is little endian uint16_t u16L; // element specifier for accessing low u16 uint16_t u16H; // element specifier for accessing high u16 #else // Byte-order is big endian uint16_t u16H; // element specifier for accessing low u16 uint16_t u16L; // element specifier for accessing high u16 #endif } s32; // element spec. for acc. struct with low or high u16 } nt32_t; /* USER CODE END ET */ /* Exported constants --------------------------------------------------------*/ /* USER CODE BEGIN EC */ #define I2C_RET_OK (int8_t)0 #define I2C_RET_NACK (int8_t)-1 #define I2C_RET_ERR (int8_t)-2 /* USER CODE END EC */ /* Exported macro ------------------------------------------------------------*/ /* USER CODE BEGIN EM */ #define LATCH_DOWN GPIOC->BRR = 0x40 #define LATCH_UP GPIOC->BSRR = 0x40 #define TUBE_PWR_ON GPIOA->BRR = 0x10 #define TUBE_PWR_OFF GPIOA->BSRR = 0x10 #define IN15_P GPIOA->BSRR = 0x1 #define IN15_Plus GPIOA->BSRR = 0x2 #define IN15_Minus GPIOA->BSRR = 0x4 #define IN15_Percent GPIOA->BSRR = 0x8 #define IN15_OFF GPIOA->BRR = 0xF #define COLOR_R(x) TIM3->CCR1 = x #define COLOR_B(x) TIM3->CCR2 = x #define COLOR_G(x) TIM3->CCR3 = x #define COLOR_RGB(r, g, b) TIM3->CCR1 = r; TIM3->CCR3 = g; TIM3->CCR2 = b /* USER CODE END EM */ /* Exported functions prototypes ---------------------------------------------*/ void Error_Handler(void); /* USER CODE BEGIN EFP */ /* USER CODE END EFP */ /* Private defines -----------------------------------------------------------*/ #define LC0_Pin LL_GPIO_PIN_0 #define LC0_GPIO_Port GPIOA #define LC1_Pin LL_GPIO_PIN_1 #define LC1_GPIO_Port GPIOA #define LC2_Pin LL_GPIO_PIN_2 #define LC2_GPIO_Port GPIOA #define LC3_Pin LL_GPIO_PIN_3 #define LC3_GPIO_Port GPIOA #define SHDN_Pin LL_GPIO_PIN_4 #define SHDN_GPIO_Port GPIOA #define PWM_R_Pin LL_GPIO_PIN_6 #define PWM_R_GPIO_Port GPIOA #define PWM_G_Pin LL_GPIO_PIN_7 #define PWM_G_GPIO_Port GPIOA #define PWM_B_Pin LL_GPIO_PIN_0 #define PWM_B_GPIO_Port GPIOB #define PWM_T_Pin LL_GPIO_PIN_1 #define PWM_T_GPIO_Port GPIOB #define BTN1_Pin LL_GPIO_PIN_8 #define BTN1_GPIO_Port GPIOA #define BTN2_Pin LL_GPIO_PIN_9 #define BTN2_GPIO_Port GPIOA #define BTN3_Pin LL_GPIO_PIN_10 #define BTN3_GPIO_Port GPIOA #define BTN4_Pin LL_GPIO_PIN_11 #define BTN4_GPIO_Port GPIOA #define Latch_Pin LL_GPIO_PIN_6 #define Latch_GPIO_Port GPIOC #define IRQ_Pin LL_GPIO_PIN_14 #define IRQ_GPIO_Port GPIOC #define IRQ_EXTI_IRQn EXTI4_15_IRQn #define UART_EN_Pin LL_GPIO_PIN_15 #define UART_EN_GPIO_Port GPIOC #define UART_ST_Pin LL_GPIO_PIN_15 #define UART_ST_GPIO_Port GPIOA /* USER CODE BEGIN Private defines */ #define USE_FULL_LL_DRIVER 1 /* BTNs */ #define BTN_NUM 4 #define BTN1_PIN GPIO_IDR_ID8 #define BTN2_PIN GPIO_IDR_ID9 #define BTN3_PIN GPIO_IDR_ID10 #define BTN4_PIN GPIO_IDR_ID11 #define BTN_PORT GPIOA #define BTN_PINS (BTN1_PIN | BTN2_PIN | BTN3_PIN | BTN4_PIN) #define BTN1_STATE (BTN_PORT->IDR & BTN1_PIN) #define BTN2_STATE (BTN_PORT->IDR & BTN2_PIN) #define BTN3_STATE (BTN_PORT->IDR & BTN3_PIN) #define BTN4_STATE (BTN_PORT->IDR & BTN4_PIN) #define BTNS_STATE (BTN_PORT->IDR & BTN_PINS) #define BTN_STATE(pin) (BTN_PORT->IDR & pin) /* time constant in ms */ #define BTN_SCAN_PERIOD 10 #define BTN_SCAN_PAUSE 200 #define BTN_TIME_PRESSED 30 #define BTN_TIME_HOLDED 500 #define BTN_TIME_REPEATED 50 typedef struct { uint8_t time; es_event_t pressed; es_event_t holded; uint32_t pin; //(GPIO_TypeDef *) GPIOA; // ?->IDR } btn_t; /* USER CODE END Private defines */ #ifdef __cplusplus } #endif #endif /* __MAIN_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/