Windows环境中,装了ESP-IDF5.1.3和ESP-IDF5.0.8。在卸载ESP-IDF5.0.8的时候,系统删除了桌面上的ESP-IDF5.1.3cmd和power shell快捷方式

如果你安装了多个版本的ESP-IDF(例如ESP-IDF 5.1.3和ESP-IDF 5.0.8),并且在卸载其中一个版本(如ESP-IDF 5.0.8)时导致另一个版本的快捷方式(如ESP-IDF 5.1.3 cmd和PowerShell)被删除,可能是因为这些快捷方式的路径或配置文件被共享或误删。

以下是解决这个问题的步骤:


1. 重新创建ESP-IDF 5.1.3的cmd和PowerShell快捷方式

你可以手动重新创建这些快捷方式。以下是具体步骤:

创建ESP-IDF Command Prompt 快捷方式:
  • 打开文件资源管理器,导航到ESP-IDF 5.1.3的安装目录,通常类似于:
    C:\esp\esp-idf-5.1.3
  • 在该目录下找到export.bat文件。
  • 右键单击桌面或其他位置,选择“新建” -> “快捷方式”。
  • 在目标路径中输入以下内容:
    cmd.exe /k "C:\esp\esp-idf-5.1.3\export.bat"
    (请根据你的实际安装路径修改路径)
  • 点击“下一步”,为快捷方式命名,例如“ESP-IDF 5.1.3 Command Prompt”。
  • 点击“完成”。
创建ESP-IDF PowerShell 快捷方式:
  • 同样打开ESP-IDF 5.1.3的安装目录。
  • 右键单击桌面或其他位置,选择“新建” -> “快捷方式”。
  • 在目标路径中输入以下内容:
    powershell.exe -NoExit -Command "& 'C:\esp\esp-idf-5.1.3\export.ps1'"
    (请根据你的实际安装路径修改路径)
  • 点击“下一步”,为快捷方式命名,例如“ESP-IDF 5.1.3 PowerShell”。
  • 点击“完成”。

2. 检查环境变量配置

ESP-IDF的命令行工具依赖于环境变量的正确配置。如果卸载ESP-IDF 5.0.8时删除了相关的环境变量,请确保ESP-IDF 5.1.3的环境变量仍然有效。

检查并设置环境变量:
  • 打开“系统属性” -> “高级系统设置” -> “环境变量”。
  • 确保以下环境变量已正确设置:
    • IDF_PATH:指向ESP-IDF 5.1.3的安装目录,例如:C:\esp\esp-idf-5.1.3
  •        PATH:包含ESP-IDF工具链的路径,例如:C:\esp\esp-idf-5.1.3\tools\idf-python.exe

3. 验证ESP-IDF 5.1.3是否正常工作

  • 使用新创建的快捷方式打开ESP-IDF Command Prompt 或 PowerShell。
  • 输入以下命令,验证ESP-IDF是否正常工作:
    idf.py --version
    如果显示正确的版本号(例如ESP-IDF v5.1.3),说明配置成功。

最后C:\esp\esp-idf-5.1.3路径下,先执行一下install.bat然后再执行一下export.bat

### ESP-IDF 事件循环机制工作原理 在 ESP-IDF 中,事件循环(Event Loop)是一种用于处理异步事件的核心机制。该机制允许应用程序响应来自不同源的各种事件,而无需阻塞主线程。通过 `esp_event` API 可以创建管理这些事件。 #### 创建与初始化 为了启动事件循环,通常需要调用函数来创建一个新的事件回路实例,并设置相应的参数[^3]: ```c // 初始化事件循环库 esp_err_t ret = esp_event_loop_create_default(); if (ret != ESP_OK) { // 错误处理逻辑... } ``` 这段代码展示了如何使用预定义配置快速建立默认的事件循环环境。 #### 注册回调函数 一旦有了有效的事件循环对象,下一步就是向其注册特定类型的监听器或处理器。这可以通过传递给 `esp_event_handler_register()` 函数完成,它接受四个主要参数:事件基类、具体事件ID、要执行的动作以及上下文数据指针。 ```c static void my_event_handler(void *handler_arg, esp_event_base_t base, int32_t id, void *event_data) { // 处理接收到的事件... } // 将上述 handler 关联到 WIFI_EVENT 基础下的任意子 ID 上 esp_event_handler_instance_t instance_any_id; esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &my_event_handler, NULL, &instance_any_id); ``` 此部分说明了怎样把自定义的行为绑定至指定类别内的所有可能发生的状况之下。 #### 发送与触发事件 当某些条件满足时,程序内部可以主动发出通知消息,从而激活之前设定好的侦听者们。利用 `esp_event_post_to()` 方法能够做到这一点;另外还有简化版接口 `esp_event_post()`, 它适用于大多数场景下直接发送全局可见的通知。 ```c // 向名为 "MY_CUSTOM_EVENT" 的基础下发一个编号为 1 的新事件 const char* MY_CUSTOM_EVENT = "MY_CUSTOM_EVENT"; int event_value = 1; esp_event_post(MY_CUSTOM_EVENT, event_value, NULL, portMAX_DELAY); ``` 此处举例介绍了两种不同的方式去广播自定义类型的消息供其他模块捕获并作出反应。 #### 卸载与清理资源 最后,在不再需要某个已经安过的事件处理器的时候,应当及时解除关联关系以免造成内存泄漏等问题。为此提供了专门用来注销现有映射表项的方法 `esp_event_handler_unregister()` 或批量移除某整个分类下面的所有条目的工具 `esp_event_handlers_unregister_all()` . ```c // 移除先前添加的那个针对 WiFi 广播包到来情况所做的安排 esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &my_event_handler); // 清空全部关于 HTTP 请求到达方面的记录 esp_event_handlers_unregister_all(HTTPD_EVENT_BASE); ``` 以上片段解释了安全释放占用空间的重要性及其操作流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值