ESP32创建工程的方法,赶紧收藏起来

Posted Wireless_Link

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP32创建工程的方法,赶紧收藏起来相关的知识,希望对你有一定的参考价值。

 零. 声明


本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!

第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设总线做一个介绍,让大家知其然又知其所以然!

第三篇:目前比较火热的GUI LVGL介绍,主要会设计LVGL7.1,LVGL8的移植介绍,并且也会介绍各个组件,知道原理后,最后,我们会推出一款组态软件来构建我们的GUI,来提升我们的效率!

第四篇:ESP32-蓝牙,熟悉我的,应该都知道,我即使从事蓝牙协议栈的开发的,所以这个是我们独有的优势,在这一篇章,我们会提供不仅仅是蓝牙应用方法的知识,也会应用结合蓝牙底层协议栈的理论,让你彻底从上到下打通蓝牙任督二脉!

第五篇:Wi-Fi介绍,熟悉我的,应该也知道,我们也做过一款sdio wifi的驱动教程板子,所以在wifi这方面我们也是有独有的优势,在这一篇章,我们同样不仅仅提供Wi-Fi应用方面的知识,也会结合底层理论,让你对Wi-Fi有一个清晰的认知!

另外,我们的教程包括但是不局限于以上篇章,为了给你一个更好的导航,以下信息尤其重要,请详细查看!!

------------------------------------------------------------------------------------------------------------------------------------------

购买开发板(点击我)

文档目录(点击我)

Github代码仓库(点击我)

蓝牙交流扣扣群:539357317

微信公众号↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

------------------------------------------------------------------------------------------------------------------------------------------

前言:

在这个步骤,我会默认你已经安装好了工具(VSCODE+ESP-IDF),并且已经拿到我们的开发板,你在这个章节会收获:

1)使用VSCODE进行编译代码,下载代码,运行代码

2)使用ESP-IDF的插件创建一个新的工程

3)自己创建一个工程,并且加文件扩展

4)熟悉部分esp-idf的API

一.程序编译

这个部门我们来学习下整个ESP32在VSCODE中是怎样编译的!

我们先不学习创建工程,先使用esp-idf example中提供的最简单的一个工程hello world(路径在esp-idf\\examples\\get-started\\hello_world)

步骤一: 使用VSCODE打开菜单: 文件->打开文件夹(选择你的idf目录,选择esp-idf\\examples\\get-started\\hello_world),打开后就是这个样子

步骤二: 点击底部红色编译按钮,等待编译完成

漫长等待,终于编译好了,如图,会统计出来各个字段的信息

二.程序烧录

我们的板子是使用UART直接烧录程序,所以不需要额外的接下载器

步骤一:选择要烧录的UART COM口

备注:此时COM口不能被占用

步骤二:选择开发板为ESP32

步骤三:在VSCODE的底部点击烧录按钮烧录

在这里你可能会提出一个问题,那我也大概猜到大家有什么问题,就是如果我在产线中,或者想给别人验证一下程序,却不能给源码,那么我要怎么烧录?

OK,收到,我们接下来来回答这个问题,我们使用的是这个工具flash_download_tool_3.9.2.exe

步骤一:我们打开这个工具,勾选如下:

然后打开工程的build路径,勾选如下,然后点击start

完成之后点击stop

备注:并不是所有工程这么配置,这个要根据不同的项目不同的地址以及配置,所以要询问给你这写bin的人,那这个工程的信息我是从哪看到的人?是VSCODE中下载的时候会提示如下信息:

> Executing task: C:\\Users\\12475\\.espressif\\python_env\\idf4.3_py3.8_env\\Scripts\\python.exe C:\\Users\\12475\\esp\\esp-idf\\components\\esptool_py\\esptool\\esptool.py -p COM5 -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_freq 40m --flash_size detect

0x10000 hello-world.bin

0x1000 bootloader/bootloader.bin

0x8000 partition_table/partition-table.bin

三.程序运行

我们打开板子的串口,会看到输出以下日志!

整个程序的逻辑是10S重启一次,下面我们来分析下程序

/* Hello World Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"

void app_main(void)

    printf("Hello world!\\n");

    /* Print chip information */
    esp_chip_info_t chip_info;
    esp_chip_info(&chip_info);
    printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",
            CONFIG_IDF_TARGET,
            chip_info.cores,
            (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
            (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");

    printf("silicon revision %d, ", chip_info.revision);

    printf("%dMB %s flash\\n", spi_flash_get_chip_size() / (1024 * 1024),
            (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");

    printf("Minimum free heap size: %d bytes\\n", esp_get_minimum_free_heap_size());

    for (int i = 10; i >= 0; i--) 
        printf("Restarting in %d seconds...\\n", i);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    
    printf("Restarting now.\\n");
    fflush(stdout);
    esp_restart();

我们首先来看下esp_chip_info 这个函数,这个函数的描述在以下连接:

Miscellaneous System APIs - ESP32 - — ESP-IDF 编程指南 v4.4 文档

分别能拿到芯片的类型/几核的CPU/支持的Feature(WIFI/BT/BLE/MESH/是否是内置的Falsh)/芯片的版本 信心

esp_get_minimum_free_heap_size,这个函数的描述在以下连接:

Miscellaneous System APIs - ESP32 - — ESP-IDF 编程指南 v4.4 文档

vTaskDelay,这个函数在一下连接,是FreeRTOS的函数

FreeRTOS - ESP32 - — ESP-IDF 编程指南 v4.4 文档

spi_flash_get_chip_size这个函数需要仔细阅读下以下连接:

SPI Flash API - ESP32 - — ESP-IDF 编程指南 v4.4 文档

总之这些API都比较简单,基本一看就会的那种,所以我在这里不再详细赘述!

OK,学到这里,你应该学会了基本的编译下载操作,

在运行了板子得到我们想要的结果后,你可能想自己练下手,创建一个工程,好了,那我们开始实操下!

四.自己创建一个工程

有两种方法,第一种是用esp-idf自带的组件来创建一个工程,第二个是我们自己创建一个工程,下面我们就分别介绍下:

1.使用原生的ESP-IDF的插件

步骤1)选择菜单栏,查看->命令面板,在里面搜索create project from extersion template

步骤2) 选择要创建工程的路径

步骤3)选择工程的类型

步骤4)在main.c的app_main函数我们添加一个打印printf

步骤5)用我们上面学的编译下载的步骤,我们把程序下载到板子中,我们看下运行效果

备注:我们暂时记住目前esp-idf所有的程序都是通过app_main这个函数入口开始,其他的暂时不用深究,我们会在后面做一个详细的介绍!

2.复制现有的工程

步骤一: 我们直接把esp-idf\\examples\\get-started中的sample_project复制一个工程,修改名字为wireless_link_project,如图:

步骤二:修改其中的Makefile的PROJECT_NAME为wireless_link_project

步骤三:编辑工程中的main.c

步骤四:按照我们前面介绍的方法进行编译下载,我们看下程序执行效果

以上是关于ESP32创建工程的方法,赶紧收藏起来的主要内容,如果未能解决你的问题,请参考以下文章

java基础名词解释,赶紧收藏起来!

分享5个你不知道的软件测试小神器(赶紧收藏起来)

年终盘点 |15种最常用的数据分析方法和模型,赶紧收藏起来吃灰

北京java培训学校哪家好,赶紧收藏!

简述java语言的特点有哪些,赶紧收藏起来!

今天清华学长推荐几个评价又好用的Python库 还不赶紧收藏起来