错误处理(基于ESP-IDF)

主要参考资料
B站Up主孤独的二进制《错误处理 - 乐鑫 ESP32 物联网开发框架 ESP-IDF 开发入门》
ESP-IDF编程指南>API指南>错误消息: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-guides/error-handling.html
ESP-IDF编程指南>API指南>严重错误: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-guides/fatal-errors.html

概述

在这里插入图片描述

可恢复错误

上面有说,比如错误码就是ESP-IDF里的esp_err_t类型,使用 if 判断可以打印出来。
在这里插入图片描述
当然,错误码看起来不直观,ESP-IDF还提供了API可以转换为具体的错误消息,它在esp_err.c中有定义。

在这里插入图片描述

不可恢复错误

不可恢复错误的第二类和第三类属于底层代码,一般不需要我们动,它会自己重启处理。
第一类是断言处理。对于可恢复错误里的错误码,可以使用断言(assert)处理,只是在ESP-IDF中有专有的断言API。

有如下几种:
在这里插入图片描述

以ESP_ERROR_CHECK为例,非ESP_OK就会导致重启和打印。
在这里插入图片描述

打印信息如下:
在这里插入图片描述

另一个在ESP-IDF源码中比较常见的是goto语句
在这里插入图片描述

ESP-IDFEspressif IoT Development Framework)是一个由Espressif Systems提供的开源框架,用于构建基于Espressif芯片(如ESP8266和ESP32系列)的物联网应用。对于HTTPS下载文件,ESP-IDF提供了一个HTTP客户端库,可以方便地处理网络请求,包括HTTPS。 在ESP-IDF中下载文件通常涉及以下步骤: 1. 引入依赖:首先在你的项目`main.c`或者其他必要的头文件中引入`esp_net_http_client.h`,这是HTTP客户端库的一部分。 ```c #include "esp_net_http_client.h" ``` 2. 初始化:创建一个HTTP客户端实例,并配置它,包括设置TLS(安全连接)支持。 ```c esp_err_t err; esp_net_http_client_config_t config = { .url = "https://example.com/file.zip", // 替换为你需要下载的URL .cert_pem = "path_to_ca_certificate.pem", // 如果有CA证书,指定路径 .insecure = false, // 默认为false,表示启用SSL验证 }; esp_net_http_client_handle_t client = NULL; err = esp_net_http_start(&client, &config); if (err != ESP_OK) { // 处理错误 } ``` 3. 发起请求并接收响应:调用`esp_net_http_get()`函数发起GET请求,然后等待数据可用。 ```c esp_err_t resp_err; esp_net_http_response_info_t response_info; char* buffer = ...; // 定义一个缓冲区来存储下载的数据 resp_err = esp_net_http_get(client, buffer, sizeof(buffer), &response_info); if (resp_err == ESP_OK) { size_t downloaded_size = response_info.content_length; printf("Downloaded %ld bytes\n", downloaded_size); } else { // 处理错误 } ``` 4. 关闭连接:当不再需要客户端时,记得调用`esp_net_http_stop()`释放资源。 ```c esp_net_http_stop(client); vTaskDelete(NULL); // 如果你在任务中运行此操作 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值