当前位置: 首页 > news >正文

ESP32基础配置

ESP32基础配置

本笔记为作者再学习ESP32的一些心得体会,如有不对的地方,请包含与谅解!

​ ————by wsoz

ESP-IDF配置

环境项配置

ESP32我们采样ESP-IDF来进行编译,我们直接拉取官方的空工程来构建我们的工程然后在该文件夹下添加我们自己的idf_5.1.2.code-workspace文件,后续我们打开文件直接通过这个文件打开即可。

该文件的作用就是告诉VS Code 和它安装的 “Espressif IDF” 扩展,你的 ESP-IDF (乐鑫物联网开发框架) 工具链都安装在哪里,以及如何配置它们。

{"folders": [{"path": "."}],"settings": {"idf.espIdfPathWin": "d:\\esp32-idf-ahy\\5.1.2\\frameworks\\esp-idf-v5.1.2","idf.pythonBinPathWin": "d:\\esp32-idf-ahy\\5.1.2\\python_env\\idf5.1_py3.11_env\\Scripts\\python.exe","idf.toolsPathWin": "d:\\esp32-idf-ahy\\5.1.2","idf.customExtraPaths": "d:\\esp32-idf-ahy\\5.1.2\\tools\\xtensa-esp-elf-gdb\\12.1_20221002\\xtensa-esp-elf-gdb\\bin;d:\\esp32-idf-ahy\\5.1.2\\tools\\riscv32-esp-elf-gdb\\12.1_20221002\\riscv32-esp-elf-gdb\\bin;d:\\esp32-idf-ahy\\5.1.2\\tools\\xtensa-esp32-elf\\esp-12.2.0_20230208\\xtensa-esp32-elf\\bin;d:\\esp32-idf-ahy\\5.1.2\\tools\\xtensa-esp32s2-elf\\esp-12.2.0_20230208\\xtensa-esp32s2-elf\\bin;d:\\esp32-idf-ahy\\5.1.2\\tools\\xtensa-esp32s3-elf\\esp-12.2.0_20230208\\xtensa-esp32s3-elf\\bin;d:\\esp32-idf-ahy\\5.1.2\\tools\\riscv32-esp-elf\\esp-12.2.0_20230208\\riscv32-esp-elf\\bin;d:\\esp32-idf-ahy\\5.1.2\\tools\\esp32ulp-elf\\2.35_20220830\\esp32ulp-elf\\bin;d:\\esp32-idf-ahy\\5.1.2\\tools\\cmake\\3.24.0\\bin;d:\\esp32-idf-ahy\\5.1.2\\tools\\openocd-esp32\\v0.12.0-esp32-20230921\\openocd-esp32\\bin;d:\\esp32-idf-ahy\\5.1.2\\tools\\ninja\\1.10.2;d:\\esp32-idf-ahy\\5.1.2\\tools\\idf-exe\\1.0.3;d:\\esp32-idf-ahy\\5.1.2\\tools\\ccache\\4.8\\ccache-4.8-windows-x86_64;d:\\esp32-idf-ahy\\5.1.2\\tools\\dfu-util\\0.11\\dfu-util-0.11-win64;d:\\esp32-idf-ahy\\5.1.2\\tools\\esp-rom-elfs\\20230320","idf.customExtraVars": {"OPENOCD_SCRIPTS": "d:\\esp32-idf-ahy\\5.1.2\\tools\\openocd-esp32\\v0.12.0-esp32-20230921/openocd-esp32/share/openocd/scripts","IDF_CCACHE_ENABLE": "1","ESP_ROM_ELF_DIR": "d:\\esp32-idf-ahy\\5.1.2\\tools\\esp-rom-elfs\\20230320/"},"idf.gitPathWin": "d:\\esp32-idf-ahy\\5.1.2\\tools\\idf-git\\2.39.2\\cmd\\git.exe","idf.espAdfPathWin": "D:\\esp32-idf-ahy\\esp-adf","files.associations": {"gpio.h": "c","stdio.h": "c","task.h": "c","sdkconfig.h": "c"}}
}

然后我们还需要修改一下.vscode文件夹因为可能会出现链接错误等问题

我们直接删除整个文件夹然后在搜索框中输入如图

在这里插入图片描述

然后选择配置ESP-IDF扩展即可

配置项修改

首先现在ESP-IDF的设置界面调整几个参数:

  1. 烧录方式-UART
  2. 烧录的波特率拉到最高2MHZ-2000000
  3. 串口监视器-115200

在这里插入图片描述

然后在sdk-menuconfig中配置

  1. 搜索CPU直接将主频拉到240MHZ
  2. freertos的系统节拍修改为1ms–1000hz
  3. freertos的版本兼容configENABLE_BACKWARD_COMPATIBILITY

在这里插入图片描述

工程构建

ESP-IDF是采用的CMakeLists工具构建。IDF工具链中的构建工具Ninja会根据CMake生成的makefile执行实际的编译、链接等构建步骤。

我们采用的框架是组件驱动库加应用层构建我们的工程框架

在这里插入图片描述

然后我们的每一个组件中都需要有一个Cmake文件来链接进入我们的工程。

下面主要讲一下整个工程的cmake文件分为了项目CMake以及组件Cmake

项目CMake

每个工程都有一个项目 CMakeLists.txt 文件,其中包含整个项目的构建设置。默认情况下,项目 CMakeLists 可

以非常小。

# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly# 1. 设置最低的 CMake 版本要求
# 告诉构建系统,要成功构建这个项目,CMake 工具的版本至少需要是 3.16。
# 这是一个兼容性声明,确保不会在过旧的环境下构建失败。
cmake_minimum_required(VERSION 3.16)# 2. 引入 ESP-IDF 的核心构建脚本
# 这是整个项目的魔法所在!
# $ENV{IDF_PATH} 是一个环境变量,指向你的 ESP-IDF 框架的安装路径。
# 这行代码的作用是加载乐鑫官方提供的 project.cmake 脚本。
# 这个脚本包含了所有复杂的逻辑,比如如何发现组件、如何编译、如何链接、如何生成最终的 .bin 固件等等。
include($ENV{IDF_PATH}/tools/cmake/project.cmake)# 3. 定义项目名称
# 这行代码为你的项目命名为 "sample_project"。
# 这个名字会出现在构建日志和一些生成的文件中。
# 通常,我们让它和项目文件夹的名称保持一致。
project(sample_project)

组件CMake

每个项目都包含一个或多个组件。组件可以是 ESP-IDF 的一部分、项目自己的组件目录的一部分,或者从自定义组件目录中

添加。主要是告诉整个工程自己需要将哪些源码构建进工程以及自己能提供的接口所需要的依赖有哪些

idf_component_register(# 1. 列出所有 .c 源文件,需要包含 src/ 路径SRCS "src/key.c"			--> 告诉系统要编译哪些源文件# 2. 指定 .h 头文件所在的目录INCLUDE_DIRS "inc"		-->提供可供外部使用的公共接口 # 2. 指定依赖REQUIRES driver			-->声明自己的依赖
)

同时为了避免重复去main组件的CMake中频繁修改包含我们可以修改原本的CMake为:

idf_component_register(# 1. 列出所有 .c 源文件,需要包含 src/ 路径SRC_DIRS ".""myapp"# 2. 指定 .h 头文件所在的目录INCLUDE_DIRS ".""myapp"
)

这个版本会自动去 main 目录和 main/myapp 目录里寻找所有的 .c.cpp 文件来编译。

乐鑫在线组件管理器

在乐鑫拓展处点击Components Manager进入乐鑫在线组件管理器,我们可以在此处进行搜索然后使用乐鑫官方已经提供的组件方便我们开发。或者进入网站ESP Component Registry进行搜索。

下面我们以使用按键库为例子,首先我们需要复制红圈处然后在终端进行粘贴,然后就会自动将该库导入我们的工程。

在这里插入图片描述

在ESP-IDF终端中进行输入即可,需要注意的是如果我们的电脑中装了Ananconda会导致我们的idf.py文件无法执行,所以我们需要先退出Ananconda环境

conda deactivate
#如果(base) PS则表示没有2完全退出Ananconda环境
#退出Ananconda环境后为 PS

在这里插入图片描述

当然也有更简单的方法就是直接在ESP-IDF终端禁用Ananconda环境

conda config --set auto_activate_base false
#这行命令是全局的全局禁用了该环境
#所以在其他有关python的环境中要使用到就需要按下面的激活该环境# 激活 base 环境
conda activate base

具体使用文档可以参考按钮 - - — ESP-IoT-解决方案最新文档

下面为本人写的简单使用没添加RTOS框架

#include <stdio.h>
#include "key_app.h"
#include "esp_log.h"
#include "iot_button.h"
#include "button_gpio.h"void button_app_cb1(void *arg,void *usr_data)
{printf("Button clicked\n");
}void button_app_cb2(void *arg,void *usr_data)
{printf("Button long pressed\n");  
}void button_init(void)
{const button_config_t btn_cfg = {.long_press_time = 1000,    //长按时间阈值.short_press_time = 0,    //短按时间阈值};    //长短按阈值const button_gpio_config_t btn_gpio_cfg =   //GPIO配置 端口号以及有效电平{.gpio_num = 0,.active_level = 0,.disable_pull=0,};button_handle_t gpio_btn = NULL;    //按钮句柄esp_err_t ret = iot_button_new_gpio_device(&btn_cfg, &btn_gpio_cfg, &gpio_btn);if(NULL == gpio_btn) {printf("Button create failed");}iot_button_register_cb(gpio_btn, BUTTON_LONG_PRESS_START,NULL,button_app_cb2, NULL); //注册回调函数iot_button_register_cb(gpio_btn, BUTTON_SINGLE_CLICK,NULL,button_app_cb1, NULL); //注册回调函数
}void app_main(void)
{button_init();while (1){}
}
http://www.dtcms.com/a/496960.html

相关文章:

  • 免费素材网站无版权百度导航最新版本下载安装
  • EPLAN2.9 2022安装破解全攻略
  • 网站设计排行榜福州企业网站
  • 公司怎么申请免费做网站学习php网站开发怎么样
  • 西湖区网站建设小说网站开发的实际意义
  • BugKu Web渗透之 login1
  • 鲜花网网站开发的意义网络营销策划总结
  • 中国航空航天国防展收官之日,展出大量程MEMS陀螺仪
  • 网站设计制做报价服装品牌策划方案
  • 时装网站的建设哪个公司的卡网络最好
  • 做企业礼品的网站网络营销网站
  • 网站建设没有预付款网站推广的方法是什么
  • 嵌入式开发学习日志39——stm32之I2C总线物理层与常用术语
  • 小学生课程同步做网站软件南宁网站建设q479185700棒
  • 鹤壁做网站公司电话平台网站建设 厦门
  • 配置USB CDC功能实现通过USB口的串口输入功能
  • 营销型平台网站建设万网站底部添加备案号
  • 济宁公司做网站在线销售网站设计文献
  • 河南焦作有做网站开发的公司吗网站备案取消前置审批
  • mvc4做网站五免费网站怎么做
  • 无法访问此网站是什么原因2345网址大全浏览器
  • 网站域名查询ip电子商务网站建设与管理课后习题
  • 做网站必须购买空间吗?网上书店网站建设毕业设计范文
  • 搜索动图素材的网站石家庄网站建设登录
  • YYModel源码学习
  • wordpress缩略图生成网站怎么做推广和优化
  • 怎样做网站关键词优化成全视频免费观看在线看2024年新年贺词
  • 那些网站分享pr做的视频软件制作商城网站模板
  • 网站开发的响应式和兼容性问题wordpress页面权限设置
  • c.xxl.job.core.log.XxlJobFileAppender : No such file or directory