#ifndef _DIP_SW_H__ #define _DIP_SW_H__ #include #include #include "define.h" #ifdef __cplusplus extern "C" { #endif #define DIP_SW_INTERVAL 5 #define DIP_SW_CHECK_COUNT 10 #define DIP_SW_CHECK_FAST_COUNT 2 #define DIP_SW_GPIO_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); #define DIP_SW01_GPIO GPIOA #define DIP_SW01_PIN GPIO_Pin_8 #define DIP_SW01_IN GPIO_ReadInputDataBit(DIP_SW01_GPIO, DIP_SW01_PIN) #define DIP_SW02_GPIO GPIOC #define DIP_SW02_PIN GPIO_Pin_9 #define DIP_SW02_IN GPIO_ReadInputDataBit(DIP_SW02_GPIO, DIP_SW02_PIN) #define DIP_SW03_GPIO GPIOC #define DIP_SW03_PIN GPIO_Pin_8 #define DIP_SW03_IN GPIO_ReadInputDataBit(DIP_SW03_GPIO, DIP_SW03_PIN) #define DIP_SW04_GPIO GPIOC #define DIP_SW04_PIN GPIO_Pin_7 #define DIP_SW04_IN GPIO_ReadInputDataBit(DIP_SW04_GPIO, DIP_SW04_PIN) #define DIP_SW05_GPIO GPIOC #define DIP_SW05_PIN GPIO_Pin_6 #define DIP_SW05_IN GPIO_ReadInputDataBit(DIP_SW05_GPIO, DIP_SW05_PIN) #define DIP_SW06_GPIO GPIOB #define DIP_SW06_PIN GPIO_Pin_15 #define DIP_SW06_IN GPIO_ReadInputDataBit(DIP_SW06_GPIO, DIP_SW06_PIN) #define DIP_SW07_GPIO GPIOB #define DIP_SW07_PIN GPIO_Pin_14 #define DIP_SW07_IN GPIO_ReadInputDataBit(DIP_SW07_GPIO, DIP_SW07_PIN) #define DIP_SW08_GPIO GPIOB #define DIP_SW08_PIN GPIO_Pin_13 #define DIP_SW08_IN GPIO_ReadInputDataBit(DIP_SW08_GPIO, DIP_SW08_PIN) typedef struct{ uint8_t dipsw01_level:1; uint8_t dipsw02_level:1; uint8_t dipsw03_level:1; uint8_t dipsw04_level:1; uint8_t dipsw05_level:1; uint8_t dipsw06_level:1; uint8_t dipsw07_level:1; uint8_t dipsw08_level:1; }dipsw_addr_s; typedef union{ dipsw_addr_s dipsw_addr; uint8_t addr; }dipsw_addr_u; typedef bool (*get_level_func)(void); typedef struct{ uint8_t idx; uint8_t dipsw_stat; bool dipsw_finish; uint8_t dipsw_on_count; uint8_t dipsw_off_count; get_level_func get_level; }dipsw_work_s; typedef void (*dipsw_upload_func)(uint8_t addr); void vDipsw_init(void); void dipsw_task_start(void); void vDipsw_set_upload_func(dipsw_upload_func func); uint16_t dipsw_task_process_event(uint8_t task_id, uint16_t events); #endif //_SWITCH_H__