乐鑫技术交流
直播中

bigbangboom

9年用户 1400经验值
擅长:电源/新能源
私信 关注
[问答]

win连接串口会导致开发板按键失效,为什么?

问题描述:
使用idf.py monitor,不论什么操作系统,功能都正常;
使用macOS screen命令,功能正常;
使用Windows putty或xshell,会有这种异常情况:串口open的那一刻会导致板子reboot,可以正常看到板子的串口打印信息,板子的按键失灵,无法触发 gpio_isr_handler -> xQueue 事件

请问是什么原因导致按键失效呢?

设备描述:
使用开发板:ESP32-C3
配置GPIO9(boot键),并如下代码来初始化按键:

  •     gpio_config_t io_conf;

  •     io_conf.intr_type = GPIO_INTR_ANYEDGE;
  •     io_conf.pin_bit_mask = GPIO_BTN_PIN_SEL;
  •     //set as input mode
  •     io_conf.mode = GPIO_MODE_INPUT;
  •     io_conf.pull_up_en = GPIO_PULLUP_ENABLE;
  •     ret = gpio_config(&io_conf);
  •     if (ret) {
  •         ESP_LOGE(TAG, "gpio config failed: %sn", esp_err_to_name(ret));
  •         return;
  •     }

  •     //create a queue to handle gpio event from isr
  •     btn_evt_queue = xQueueCreate(10, sizeof(uint8_t));
  •     //start gpio task
  •     xTaskCreate(btn_task, "btn_task", 2048, NULL, 10, NULL);

  •     //install gpio isr service
  •     ret = gpio_install_isr_service(ESP_INTR_FLAG_DEFAULT);
  •     if (ret) {
  •         ESP_LOGE(TAG, "gpio install isr failed: %sn", esp_err_to_name(ret));
  •         return;
  •     }
  •     //hook isr handler for specific gpio pin
  •     ret = gpio_isr_handler_add(GPIO_BTN_IO, gpio_isr_handler, (void*) GPIO_BTN_IO);
  •     if (ret) {
  •         ESP_LOGE(TAG, "gpio isr add failed: %sn", esp_err_to_name(ret));
  •         return;
  •     }


回帖(1)

郭中

2024-6-22 15:29:42
根据您提供的问题描述和设备配置,我们可以分析以下几个可能的原因导致按键失效:

1. **驱动冲突**:在Windows系统中,可能存在其他驱动程序与ESP32-C3的串口驱动冲突,导致按键失效。请检查设备管理器中是否有其他可能影响串口通信的设备。

2. **串口通信参数设置**:使用Windows的串口工具(如PuTTY或Xshell)时,可能需要调整串口通信参数(如波特率、数据位、停止位和奇偶校验位)以匹配ESP32-C3的设置。请确保这些参数与开发板的设置一致。

3. **电源干扰**:当连接Windows设备时,可能存在电源干扰问题,导致ESP32-C3的GPIO9(boot键)受到影响,从而影响按键功能。尝试使用其他电源或减少电源干扰。

4. **软件问题**:可能是ESP32-C3的固件或驱动程序存在问题,导致在Windows系统下按键失效。尝试更新固件或驱动程序,或者在ESP-IDF中检查是否有与Windows系统相关的兼容性问题。

5. **硬件问题**:可能是ESP32-C3开发板的硬件存在问题,导致在Windows系统下按键失效。检查开发板的硬件连接和焊接是否正常。

为了解决这个问题,您可以尝试以下步骤:

1. 确保Windows系统的串口工具(如PuTTY或Xshell)的通信参数与ESP32-C3的设置一致。

2. 检查设备管理器,确保没有其他驱动程序与ESP32-C3的串口驱动冲突。

3. 尝试使用其他电源或减少电源干扰。

4. 更新ESP32-C3的固件或驱动程序,检查是否有与Windows系统相关的兼容性问题。

5. 如果以上方法都无法解决问题,您可以尝试在其他Windows设备上测试,或者寻求开发板制造商的技术支持。
举报

更多回帖

×
20
完善资料,
赚取积分