#ifndef __BSP_KEY_H #define __BSP_KEY_H #include "ch32v30x.h" #define BSP_KEY_SCAN_TIM TIM3 #define BSP_KEY_SCAN_TIM_RCC_ENABLE() RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE) #define BSP_KEY_SCAN_TIM_IRQHANDLER TIM3_IRQHandler #define BSP_KEY_SCAN_TIM_IRQN TIM3_IRQn #define BSP_KEY_NEXT_PORT GPIOA #define BSP_KEY_NEXT_PIN GPIO_Pin_0 #define BSP_KEY_NEXT_PORT_RCC RCC_APB2Periph_GPIOA #define BSP_KEY_PAUSE_PORT GPIOA #define BSP_KEY_PAUSE_PIN GPIO_Pin_1 #define BSP_KEY_PAUSE_PORT_RCC RCC_APB2Periph_GPIOA #define BSP_KEY_PREV_PORT GPIOA #define BSP_KEY_PREV_PIN GPIO_Pin_2 #define BSP_KEY_PREV_PORT_RCC RCC_APB2Periph_GPIOA #define BSP_KEY_MODE_PORT GPIOA #define BSP_KEY_MODE_PIN GPIO_Pin_3 #define BSP_KEY_MODE_PORT_RCC RCC_APB2Periph_GPIOA typedef enum { bsp_key_none = 0x00, bsp_key_next_short = 0x01, bsp_key_pause_short = 0x02, bsp_key_prev_short = 0x04, bsp_key_mode_short = 0x08, bsp_key_next_long = 0x10, bsp_key_pause_long = 0x20, bsp_key_prev_long = 0x40, bsp_key_mode_long = 0x80, } bsp_key_event_e; void bsp_key_init(void); bsp_key_event_e bsp_key_get_event(void); const char *bsp_key_get_event_string(bsp_key_event_e key_event); #endif