修复按键与BOOT冲突

This commit is contained in:
OPTOC
2025-10-23 18:39:21 +08:00
parent 21b4e242a0
commit ee28ccf5a7
2 changed files with 24 additions and 4 deletions

View File

@@ -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();
}

View File

@@ -59,3 +59,5 @@ void boot_set(uint8_t value);
* @brief 设置boot按键为高阻态
*/
void boot_set_high_z(void);
void key_test(void);