Files
DS18B20_Library/Core/MyLibs/general_gpio.h

89 lines
2.9 KiB
C

/**
**************************************************************************
* @file general_gpio.h
* @brief Заголовочный файл для модуля инициализации портов.
*************************************************************************/
#ifndef __GPIO_GENERAL_H_
#define __GPIO_GENERAL_H_
#include "mylibs_defs.h"
#define SPI_Alternate_Mapping(INSTANCE) ((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
(((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
(((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
(((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
(0))
#define TIM_Alternate_Mapping(INSTANCE) ((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
(((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
(((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
(((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
(0))
typedef enum
{
LED_IS_OFF = 0,
LED_IS_ON = 1,
LED_IS_BLINKING = 2,
LED_IS_FADING = 3,
}GPIO_LEDStateTypeDef;
typedef struct
{
GPIO_LEDStateTypeDef state;
GPIO_TypeDef *LED_Port;
uint32_t LED_Pin;
uint32_t LED_Period;
uint32_t tickprev;
}GPIO_LEDTypeDef;
typedef struct
{
GPIO_TypeDef *Sw_Port;
uint32_t Sw_Pin;
uint32_t Sw_PrevState;
uint32_t Sw_FilterDelay;
uint32_t tickprev;
}GPIO_SwitchTypeDef;
/////////////////////////////////////////////////////////////////////
///////////////////////////---FUNCTIONS---///////////////////////////
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx);
/* Считать состоянии кнопки запуска */
uint8_t GPIO_Read_Swich(GPIO_SwitchTypeDef *swstart);
/* Включить светодиод */
void GPIO_LED_On(GPIO_LEDTypeDef *led);
/* Выключить светодиод */
void GPIO_LED_Off(GPIO_LEDTypeDef *led);
/* Активировать моргание светодиодом */
void GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period);
/* Моргание светодиодом */
void GPIO_LED_Blink_Handle(GPIO_LEDTypeDef *led);
///////////////////////////---FUNCTIONS---///////////////////////////
#ifndef LED_ON
#define LED_ON 0
#endif
#ifndef LED_0FF
#define LED_OFF 1
#endif
#ifndef SW_ON
#define SW_ON 0
#endif
#ifndef SW_0FF
#define SW_OFF 1
#endif
#endif // __GPIO_GENERAL_H_