| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #include "key_io.h"
- #include "gd32e23x_libopt.h"
- #define KEY_IO_TEST_RCU RCU_GPIOB
- #define KEY_IO_RST_RCU RCU_GPIOC
- #define KEY_IO_DETECTION_RCU RCU_GPIOA
- #define KEY_IO_RST GPIOC
- #define KEY_IO_TEST GPIOB
- #define KEY_IO_DETECTION GPIOA
- #define KEY_RST GPIO_PIN_14
- #define KEY_TEST GPIO_PIN_2
- #define KEY_DETECTION GPIO_PIN_11
- #define DERECTION_EXIT_RCU EXTI_SOURCE_GPIOA
- #define DERECTION_EXIT_PIN KEY_DETECTION
- #define DERECTION_EXIT_SOURCE EXTI_SOURCE_PIN11
- #define DERECTION_EXIT_EXIT EXTI_11
- extern uint16_t detection_count;
- uint8_t key_detection = 0;
- static void ConfigDetection(void);
- void key_io_init(void * value)
- {
- (void)(value);
- rcu_periph_clock_enable(KEY_IO_TEST_RCU);
- rcu_periph_clock_enable(KEY_IO_RST_RCU);
-
- gpio_mode_set(KEY_IO_RST, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_RST);
- gpio_mode_set(KEY_IO_TEST, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST);
-
-
- //ConfigDetection();
- }
- static void ConfigDetection(void)
- {
- rcu_periph_clock_enable(RCU_CFGCMP);
- rcu_periph_clock_enable(KEY_IO_DETECTION_RCU);
- gpio_mode_set(KEY_IO_DETECTION, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_DETECTION);
- nvic_irq_enable(EXTI4_15_IRQn,2);
- syscfg_exti_line_config(DERECTION_EXIT_RCU,DERECTION_EXIT_SOURCE);
- exti_init(DERECTION_EXIT_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
- exti_interrupt_flag_clear(DERECTION_EXIT_EXIT);
- }
- void EXTI4_15_IRQHandler(void){
-
- if(RESET != exti_interrupt_flag_get(DERECTION_EXIT_EXIT))
- {
- key_detection = 1;
- detection_count = 0;
- exti_interrupt_flag_clear(DERECTION_EXIT_EXIT);
- }
- }
- bool get_rst()
- {
- FlagStatus status = SET;
- bool ret = false;
- uint32_t count = 100;
- if((status = gpio_input_bit_get(KEY_IO_RST,KEY_RST)) == RESET)
- {
- while(count--);
- if((status = gpio_input_bit_get(KEY_IO_RST,KEY_RST)) == RESET)
- {
- ret = true;
- }
- }
- return ret;
- }
- bool get_test()
- {
- FlagStatus status = SET;
- bool ret = false;
- uint32_t count = 100;
- if((status = gpio_input_bit_get(KEY_IO_TEST,KEY_TEST)) == RESET)
- {
- while(count--);
- if((status = gpio_input_bit_get(KEY_IO_TEST,KEY_TEST)) == RESET)
- {
- ret = true;
- }
- }
- return ret;
- }
- uint8_t get_detection()
- {
- // FlagStatus status = SET;
- // bool ret = false;
- // if((status = gpio_input_bit_get(KEY_IO_IO,KEY_DETECTION)) == RESET)
- // ret = true;
- return key_detection;
- }
|