/** ****************************************************************************** * @file py32f0xx_bsp_button.h * @author MCU Application Team * @brief ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef PY32F003_BSP_BUTTON_H #define PY32F003_BSP_BUTTON_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include #include "py32f0xx_ll_rcc.h" #include "py32f0xx_ll_bus.h" #include "py32f0xx_ll_system.h" #include "py32f0xx_ll_exti.h" #include "py32f0xx_ll_cortex.h" #include "py32f0xx_ll_utils.h" #include "py32f0xx_ll_pwr.h" #include "py32f0xx_ll_dma.h" #include "py32f0xx_ll_gpio.h" #include "py32f0xx_ll_usart.h" typedef enum { BUTTON_USER = 0, /* Alias */ BUTTON_KEY = BUTTON_USER } Button_TypeDef; typedef enum { BUTTON_MODE_GPIO = 0, BUTTON_MODE_EXTI = 1 } ButtonMode_TypeDef; #define BUTTONn 1 /** * @brief User push-button */ #define USER_BUTTON_PIN LL_GPIO_PIN_12 #define USER_BUTTON_GPIO_PORT GPIOA #define USER_BUTTON_GPIO_CLK_ENABLE() LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA) #define USER_BUTTON_GPIO_CLK_DISABLE() LL_IOP_GRP1_DisableClock(LL_IOP_GRP1_PERIPH_GPIOA) #define USER_BUTTON_EXTI_IRQn EXTI4_15_IRQn #define USER_BUTTON_EXTI_LINE LL_EXTI_LINE_12 #define USER_BUTTON_EXTI_LINE_ENABLE() LL_EXTI_EnableIT(USER_BUTTON_EXTI_LINE) #define USER_BUTTON_EXTI_FALLING_TRIG_ENABLE() LL_EXTI_EnableFallingTrig(USER_BUTTON_EXTI_LINE) #define USER_BUTTON_IRQHANDLER EXTI4_15_IRQHandler /* Aliases */ #define KEY_BUTTON_PIN USER_BUTTON_PIN #define KEY_BUTTON_GPIO_PORT USER_BUTTON_GPIO_PORT #define KEY_BUTTON_GPIO_CLK_ENABLE() USER_BUTTON_GPIO_CLK_ENABLE() #define KEY_BUTTON_GPIO_CLK_DISABLE() USER_BUTTON_GPIO_CLK_DISABLE() #define KEY_BUTTON_EXTI_IRQn USER_BUTTON_EXTI_IRQn #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do { if((__INDEX__) == 0) USER_BUTTON_GPIO_CLK_ENABLE();} while(0) #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) (((__INDEX__) == 0) ? USER_BUTTON_GPIO_CLK_DISABLE() : 0) void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode); void BSP_PB_DeInit(Button_TypeDef Button); uint32_t BSP_PB_GetState(Button_TypeDef Button); #ifdef __cplusplus } #endif #endif /* PY32F003_BSP_BUTTON_H */