IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> esp32系列的开发环境搭建(windows) -> 正文阅读

[开发工具]esp32系列的开发环境搭建(windows)

相关链接:
    https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s2/index.html。
    https://github.com/espressif/esp-idf。

手动安装:
    准备git,python需要3.8.x。假设这里准备一个C:\xiaguangbo\software\espidf文件夹来放库和工具。库的路径不能有中文和空格,库里的任何一个文件路径都不能超过90个字符。
    在\espidf下用powershell执行:git config --global http.postBuffer 524288000,git clone --recursive https://github.com.cnpmjs.org/espressif/esp-idf.git。http.postBuffer小了会出问题,不行就再改大点。git clone用github.com.cnpmjs.org替代github.com快很多。完成后,espidf\esp-idf就是库的文件夹。
    python的模块要自己安装。在espidf\esp-idf下用powershell执行pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple。
    设置环境变量IDF_TOOLS_PATH:C:\xiaguangbo\software\espidf\.espressif。这样install脚本才能找到位置。运行install脚本。如果使用install脚本安装工具时,下载慢,直接把输出的信息里的下载地址放到浏览器里去下载,把下载下来的包放到espidf\.espressif\dist里。
    现在工具都准备好了。

编译下载等:
    在项目文件夹下执行export.ps1脚本,比如C:\xiaguangbo\software\espidf\esp-idf\export.ps1,export脚本会临时导入工具的路径,就可以执行idf.py命令了。命令行每次启动都要执行该脚本。
    比如使用示例项目:把espidf\esp-idf\examples\get-started\sample_project复制一份,在复制的sample_project下执行export.ps1脚本,并依次执行:选择目标芯片型号:idf.py set-target esp32s2(有esp32、esp32s2、esp32c3等)。编译、下载、打印监控组合:idf.py -p COM3 build flash monitor(COM3是根据自己电脑上显示的串口号来的,monitor用”ctrl ]”退出)。
    非必须命令:配置(比如设置spiFlash大小,cpu主频):idf.py menuconfig。

更新idf:
    在\espidf下用powershell执行git pull,git submodule update --init --recursive。更新库后执行install脚本,更新工具。

问题:
    如果下载失败,检查目标芯片设置的对不对,COM口选择的对不对,下载串口有没有受到干扰等。我把esp32s2核心板插面包板上就大概率下载失败。
    项目编译有问题时,比如有些文件去掉了但还是会编译,就需要执行fullclean,将缓存文件全部删掉,回到未编译前的情况。
    任务必须有延时,让IDLE任务去重置看门狗。
    如果出现很多都未定义什么的,应该是没有相应的宏定义导致定义没有开放出来,不同的版本的库用的宏定义不一定相同。

工程目录和CMakeLists.txt的文件使用方法:
工程目录:
project/ > components/ > sdkCfg/ > sdkCfg.h
                                   CMakeLists.txt
                       > tinyusb/ > additions/ > ...
                                    src/ > ...
                                    CMakeLists.txt
           main/ > main.c
                   usbTask.c
                   CMakeLists.txt
           CMakeLists.txt
           ...

    需要写成这样,自己的各类库文件夹就放在project/components下。如果都放在project/main里,那project/main/CMakeLists.txt里不知道要写多少呢,所以要分开管理。
    components目录的名字是有特殊意义的,会做特殊处理,该目录下的一级目录会作为“组件”,这里的组件有sdkCfg、tinyusb,main文件夹固定为组件。这里的组件如果和idf库里的components同名则会屏蔽库里的,使用这里的。
    尽量防止组件的相互引用,否则会产生“循环依赖”问题,虽然可以解决,但会增加复杂性。
    这里本想把sdkCfg.h移到project/main/下,但是这样tinyusb就要引用main组件,而main也引用了tinyusb组件,就会形成循环依赖,所以这里就把sdkCfg.h单独提出来了。

CMakeLists.txt内容:
    project/CMakeLists.txt是固定的:
cmake_minimum_required(VERSION 3.5)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(main)

    project/components/sdkCfg/CMakeLists.txt,只有.h文件,没有.c文件,且sdkCfg.h不引用其他文件:
idf_component_register(...
                    INCLUDE_DIRS ".")

    project/components/tinyusb/CMakeLists.txt,引用了sdkCfg.h,所以要把sdkCfg组件加进来:
idf_component_register(SRC_DIRS 
                                "additions/src"
                                "tinyusb/src"
                                "tinyusb/src/class/cdc"
                                "tinyusb/src/common"
                                "tinyusb/src/device"
                                "tinyusb/src/portable/espressif/esp32sx"
                    INCLUDE_DIRS 
                                "."
                                "additions/include"
                                "additions/include_private"
                                "tinyusb/src"
                                "tinyusb/src/class/cdc"
                                "tinyusb/src/common"
                                "tinyusb/src/device"
                                "tinyusb/src/osal"
                    REQUIRES sdkCfg)

    project/main/CMakeLists.txt,引用了sdkCfg.h和tinyusb的一些文件,所以要把这两个组件都加进来:
idf_component_register(SRC_DIRS "."
                    INCLUDE_DIRS "."
                    REQUIRES sdkCfg tinyusb)

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 12:08:32  更:2021-09-30 12:09:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:40:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码