esp32 && 8266 freertos Task与NVS api入门练习---(1)

本文介绍ESP32中使用NVS API进行数据存储的示例代码,包括两个任务task1和task2,task1负责写入长度为100的字符串至NVS,task2读取并打印字符串。代码展示了如何打开NVS handle,设置和获取字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提:
自己规划 Partition table,要求 nvs 大小100KB,自定义参数区大小 100KB

目的:基于两个 task 实现如下功能(使用用NVS api)
1.1 task1 保存长度为 100 的字符串,形式为 “12345678901234567890…",然后通知 到 task2
1.2 task2 取出 task1 保存到数据,并按照 字符串打印出来

#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "rom/ets_sys.h"
#include "esp_wifi.h"
#include "esp_event_loop.h"
#include "esp_log.h"
#include "nvs_flash.h"
#include <assert.h>
#include "esp_partition.h"
#include "esp_log.h"

#define MY_STRING_LEN 100
static EventGroupHandle_t receive_data_event;
const int CONNECTED_BIT = BIT0;

void vTask1( void *pvParameters )
{
   
   

  char str[MY_STRING_LEN + 1] = {
   
   0};

    for (int i=0;i<MY_STRING_LEN;i++) {
   
   
          str[i]=(</
### ESP32-WROOM-32E ESP32-WROOM-32 的规格差异及功能对比 #### 基本概述 ESP32-WROOM-32 是一款经典的 Wi-Fi 和蓝牙双模 MCU 模组,广泛应用于物联网设备中。而 ESP32-WROOM-32E 则是在其基础上进行了改进的版本,主要提升了稳定性和安全性[^1]。 --- #### 主要区别 ##### 1. **硬件设计** - **ESP32-WROOM-32**: 使用的是早期版本的芯片封装技术,内部集成了天线匹配网络和电源管理单元 (PMU),适合一般的 IoT 应用场景。 - **ESP32-WROOM-32E**: 在硬件层面引入了更先进的制造工艺,优化了射频性能并增强了抗干扰能力,从而提高了整体系统的可靠性[^2]。 ##### 2. **稳定性兼容性** - **ESP32-WROOM-32**: 虽然已经非常成熟,但在某些极端条件下可能会遇到信号不稳定或者功耗控制不理想的情况。 - **ESP32-WROOM-32E**: 针对这些问题做了针对性改善,特别是在高温环境下的表现更为出色;同时支持最新的固件更新机制,便于长期维护和技术迭代[^2]。 ##### 3. **安全特性** - **ESP32-WROOM-32**: 提供基本的安全加密选项,比如 flash 加密以及 secure boot 功能。 - **ESP32-WROOM-32E**: 扩展了更多的安全保障措施,增加了针对现代网络安全威胁的有效防护手段,例如更强的身份验证协议和支持多种高级算法的能力。 ##### 4. **成本考量** - **ESP32-WROOM-32**: 成本较低,对于预算有限但需求简单的项目是一个经济实惠的选择。 - **ESP32-WROOM-32E**: 因为其附加价值较高——无论是从质量还是功能性角度来看——价格自然也相对更高一些[^2]。 ##### 5. **适用范围** - 如果只是做一些基础实验或者是小型家庭自动化装置,则可以选择性价比高的 ESP32-WROOM-32; - 对于那些追求极致体验、需要长时间运行且处于复杂电磁环境中工作的工业级产品而言,显然应该优先考虑采用更加可靠的 ESP32-WROOM-32E 版本来构建解决方案[^3]。 --- ### 示例代码片段展示如何初始化两者之间的连接设置(假设均基于相同 SDK) 以下是通过 `esp-idf` 初始化 WiFi 连接的一个简单例子: ```c #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "nvs_flash.h" void app_main(void){ esp_err_t ret = nvs_flash_init(); if(ret != ESP_OK && ret != ESP_ERR_NVS_NO_FREE_PAGES ){ // handle error... } wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT() ; ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); /* Additional configurations here */ } ``` 注意:尽管两者的 API 接口一致,但由于实际使用的模块不同,在具体实现过程中可能还需要调整部分参数配置来适应各自的特性和优势[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值