diff --git a/app/drivers/sertrf/key.c b/app/drivers/sertrf/key.c index f1aa6d6..0914029 100644 --- a/app/drivers/sertrf/key.c +++ b/app/drivers/sertrf/key.c @@ -14,7 +14,7 @@ cfg_board_pin_io_t boot_switch = { bool key_single_click = 0,key_press_down = 0,key_press_up = 0; - +static os_work_t work_handler_button; // 用户在此处理按键事件 static void my_button_handler(button_event_t evt) { switch (evt) { @@ -35,6 +35,8 @@ static void my_button_handler(button_event_t evt) { case EVT_DOUBLE_CLICK: //双击 // SYS_LOG_INF("[Event] DOUBLE_CLICK"); // sertrf_rf_switch(1); + // aes_test(); + key_test(); break; case EVT_LONG_PRESS: //长按 SYS_LOG_INF("[Event] LONG_PRESS"); @@ -44,7 +46,7 @@ static void my_button_handler(button_event_t evt) { break; case EVT_SINGLE_LONG_PRESS: //单击后长按 rgb_Indicator_light_off(0); - // wifi_mode_switch(NULL); + wifi_mode_switch(NULL); SYS_LOG_INF("[Event] SINGLE_LONG_PRESS"); break; default: break; @@ -176,13 +178,16 @@ void button_work_init() { button_init(&btn, read_button_pin, my_button_handler); - static os_work_t work_handler_button; os_work_create(&work_handler_button, "work-button", _work_button, NULL, OS_PRIORITY_NORMAL); os_work_submit(default_os_work_q_hdl, &work_handler_button, 10); } void boot_set(uint8_t value) { + // 设置按键为高阻态,防止冲突 + gpio_to_high_z(&key_switch); + os_work_suspend(&work_handler_button); + pin_cfg_output(&boot_switch); pin_set_valid(&boot_switch, value); } @@ -190,4 +195,17 @@ void boot_set(uint8_t value) void boot_set_high_z(void) { gpio_to_high_z(&boot_switch); + //重新初始化按键 + pin_cfg_input(&key_switch); + os_work_resume(&work_handler_button,10); + // os_work_later(10); +} + +void key_test(void) +{ + boot_set(0); + + os_thread_sleep(5000); + + boot_set_high_z(); } \ No newline at end of file diff --git a/app/drivers/sertrf/key.h b/app/drivers/sertrf/key.h index c536414..3a54391 100644 --- a/app/drivers/sertrf/key.h +++ b/app/drivers/sertrf/key.h @@ -58,4 +58,6 @@ void boot_set(uint8_t value); /** * @brief 设置boot按键为高阻态 */ -void boot_set_high_z(void); \ No newline at end of file +void boot_set_high_z(void); + +void key_test(void); \ No newline at end of file