【ESP32-IDF】01 ESP32开发方法

ESP32开发方法

1. ESP32概述

  ESP32是一款用于物联网设备开发的芯片。一般esp32包括芯片、模组、开发板三个级别的开发。

  • 芯片级别开发:使用esp32的芯片进行开发,能够实现最高的定制化开发,但是需要自己设计射频电路
  • 模组级别开发:esp32芯片集成在了模组上,内置了最小系统、存储器、天线等部件,但是使用的时候需要自己设计供电
  • 开发板级别开发:定制化等级最低,但是所有的部分都被集成进去了。

  有以下特点:

  • 双核cpu
  • 内置free-rtos实时操作系统
  • 32bit MCU
  • 芯片集成了wifi和蓝牙功能
  • 睡眠模式工作电流小于5uA

   功能模块

在这里插入图片描述

2. 开发方法概述

   esp32既可以作为核心芯片进行开发,也可以作为协助的模块进行开发。

2.1 作为主机开发

2.1.1 使用官方工具链进行开发

  这种开发方法就是使用官方的sdk进行开发,主要的开发工作流是:使用vscode写代码,使用configuratioin menu 配置编译的一些属性,使用openOCD调试代码,最后使用windows命令行或者powershell进行代码的上传。

  使用该方法开发的优点在于,能够实现对esp32最底层的开发控制,缺点是开发不是非常的方便。而且windows上编译上传速度很慢。linux系统上比较快。windows用户通过安装虚拟机的方法,用linux环境进行开发。

  该方法配置开发环境的教程看官方资料

2.1.1.1 安装windows开发环境

   从官方网站上下载并安装esp-idf。教程

2.1.1.2 创建esp-idf项目
(1)安装必要软件

   需要在扩展组件中搜索esp-idf,并且进行安装。会自动安装依赖的组件C/C++,安装完成以后是这样的
在这里插入图片描述

(2) 创建项目

  打开esp-idf 的cmd界面

在这里插入图片描述
  输入创建项目命令

npx create-esp32-app

  输入项目名称

  选择esp-idf所在目录。上下键进行选择,tab键选中。

在这里插入图片描述

  选择esp tools所在目录。上下键进行选择,tab键选中。
在这里插入图片描述

   选择用c还是c++

在这里插入图片描述

   选择创建项目的选项,按sapce选中

在这里插入图片描述
  就在esp32-idf目录下创建好了项目

(3) 编写代码

  在创建好的项目路径下输入code. 就可以打开vscode进行代码书写了

在这里插入图片描述

2.1.1.3 编译下载

   可以使用esp-idf创建的powshell和cmd进行,也可以在vscode中进行

   在vscode中,按f1,打开终端,然后输入指令

idf.py -p COMn flash monitor

  第一次编译会很慢

  发现一个很奇怪的问题,如果引入外部文件,是没有办法编译通过的。但是如果在这个外部cpp某个函数前,加上extern “C”,编译一次会失败。然后把这个extern "C"去掉,再编译,就能够成功了。不知道为什么
在这里插入图片描述

2.1.1.4 编译下载存在问题的解决

  有时候会出现编译以后,找不到头文件中的函数的问题。比如会报 undefined function等错误,究其原因,发现是因为该文件的cpp文件并没有编译的原因

  要解决这个问题,我们先看一个esp32项目是怎么组成的,以hello_world为例,文件目录如下(这部分文本来自乐鑫)

- hello_world/
             - Makefile
             - main/       - hello_world_main.c
                           - component.mk
             - README.md
             - sdkconfig(编译生成或者自己添加)
             - build/(编译生成)


  • makefile

项目 Makefile 会设置 PROJECT_NAME 变量,编译生成的用户 BIN 文件名即为此文件名;然后还会包含 ESP_IDF 的核心 Makefile : $(IDF_PATH)/make/project.mk,注意的是只有包含此 Makefile 文件才会最终链接到 ESP-IDF 上去,否则会无法使用所有的 components。一般简单的 demo 只需要包含这两项即可,但也可以另外设置本项目需要编译和配置的 make 功能。

  • main

main 目录包含了程序的源代码以及一个 component.mk 文件,其中 component.mk 会把用户项目编译集成到 ESP-IDF 中,里面可以为空,也可以只包含一些变量定义控制 component 的编译过程。如果没有 component.mk 文件, ESP-IDF 不会编译此目录,在运行时会报出无法找到 app_main 的错误。component.mk文件记录的main文件中需要编译的源文件

  • sdkconfig

sdkconfig 文件会在编译后自动生成,里面主要包含用户的项目配置信息,这个文件可以通过使用 make menuconfig 进行更改, 配置信息会对所有的 component 生效(包括 ESP-IDF),一般用户可以创建 sdkconfig.defaults 文件来保存本项目必须的配置项,这样可以防止其他使用者胡乱修改配置导致编译出错

  • build

build 目录在编译时生成,是放置编译输出的文件夹,里面包含每个 component的中间结果以及最后的二进制执行文件。

  因此,我们知道了,esp32项目是通过main目录中的component.mk确定要编译的文件,因此只要在该目录下增加要编译的源文件即可,然后就会生成正确的build目录了

在这里插入图片描述

2.1.2 使用arduino工具链进行开发

  这种方法开发速度比较快,arduino ide把所有实现细节都隐藏了。可以直接在一个软件上写代码、编译运行,非常的简单

  该方法的缺点在于:

  • arduino对于代码追溯能力很差,不方便看代码
  • arduino开发不够底层,无法掌控编程的细节

  该方法配置开发环境教程点击这里


   用arduino配置esp32开发环境大致是两种方案

  • 一种是官网下载arduino-esp32的包,然后拷贝到arduino-hardware-espressif-esp32路径下的方法,然后在运行get.exe
  • 另外一种是arduino-ide上,先添加esp32的json路径,再搜索开发板,在线下载的方法

   这两种方法都需要注意一个细节,就是不论是法1运行exe的时候,还是法2在线下载的时候,其实都是从github上下载的,所以务必注意你的电脑能够连接到github,否则安装不成功。

2.1.3 使用micropython进行开发

  该方法我还没用尝试过

2.1.4 使用visual studio 进行开发

  该方法的开发思路是,把arduino开发环境部署到visual studio上进行。

   优点:

  • 能够使用idf的库进行开发
  • 可以利用visual studio 的代码追溯、代码补全等功能,更加便捷
  • 可以利用arduino的编译下载环境,快
  • 可以在一个软件上完成所有的工作

  缺点:

  • 相比于官方工具链,不能配置编译选项,不能调试
  • 不能配置编译选项就比如,无法关闭中断看门狗,如果在中断服务函数中需要进行阻塞,系统会在中断看门狗的作用下不断重启
    在这里插入图片描述

  该种开发方法只需要在arduino ide中配置好esp32开发环境后,再移到visual studio即可,教程

2.2 作为从机开发

  esp32可以通过串口,利用AT指令作为从机进行开发。

3. idf开发资料

官网资料

  • esp32技术规格书:对芯片一些概要性的描述
  • esp32技术参考指南: 具体原理、相关的寄存器
  • esp32硬件设计指南: 硬件设计
  • esp32软件编程指南: api手册、软件配置流程
  • esp32-idf带的例程: 具体api该怎么使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值