#include "key_io.h" #include "gd32e23x_libopt.h" #define KEY_IO_RCU RCU_GPIOB #define KEY_IO_IO GPIOB #define KEY_IO_A_RST GPIO_PIN_9 #define KEY_IO_A_TEST GPIO_PIN_8 #define KEY_IO_B_RST GPIO_PIN_7 #define KEY_IO_B_TEST GPIO_PIN_6 #define KEY_IO_RST GPIO_PIN_2 #define KEY_IO_TEST GPIO_PIN_1 #define KEY_DETECTION GPIO_PIN_5 void key_io_init(void * value) { (void)(value); rcu_periph_clock_enable(KEY_IO_RCU); // gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_A_RST); // gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_A_TEST); // gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_B_RST); // gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_B_TEST); gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_RST); gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_IO_TEST); gpio_mode_set(KEY_IO_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_DETECTION); } bool get_rst() { FlagStatus status = SET; bool ret = false; uint32_t count = 100; if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_RST)) == RESET) { while(count--); if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_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_IO,KEY_IO_TEST)) == RESET) { while(count--); if((status = gpio_input_bit_get(KEY_IO_IO,KEY_IO_TEST)) == RESET) { ret = true; } } return ret; } bool get_detection() { FlagStatus status = SET; bool ret = false; if((status = gpio_input_bit_get(KEY_IO_IO,KEY_DETECTION)) == RESET) ret = true; return ret; }