基于ESP-IDF环境的ESP32-C3开发
基于ESP-IDF环境的ESP32-C3开发之工程分析
为搞清ESP32的代码框架,从观看入门工程"hello world"来分析源码,然后自建工程,并逐步添加自己的组件,达到便于移植和快速开发的目的。
以下为自建的文件夹及文件描述
项目构成
结构说明
demo
|---main
| |---main.c //主函数
| |---CMakeLists
| |---component.mk
|---CMakeLists
|---components
| |---button //boot按键引脚扫描例程
| | |---bsp_button.c
| | |---CMakeLists
| | |---include
| | | |---bsp_button.h
| |---confWIFI //smartconfig,手机APP配网例程,需要用到乐鑫的ESP_TOUCH.app
| | |---bsp_Fi.c
| | |---CMakeLists
| | |---include
| | | |---bsp_Fi.h
| |---led //板载LED驱动例程
| | |---bsp_led.c
| | |---CMakeLists
| | |---include
| | | |---bsp_led.h
| |---wifi //SoftAP配网例程
| | |---bsp_wifi.c
| | |---CMakeLists
| | |---include
| | | |---bsp_wifi.h
| |---blu_fi //蓝牙配网例程,需要用到乐鑫的EspBluFi.app
| | |---bsp_blu_fi.c
| | |---CMakeLists
| | |---include
| | | |---bsp_blu_fi.h
demo工程里面包含了几类,分别为:
main文件夹
main文件夹下面包含了main.c,CMakelists.txt,componet.mk,如果有必要,也可在文件夹下面添加include文件夹
main.c为一些基础类的函数调用,在这里就不多说了。
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"#include "esp_wifi.h"#include "bsp_led.h"
#include "bsp_button.h"
#include "bsp_wifi.h"
#include "bsp_fi.h"#include "driver/gpio.h"
// #include "esp_bt.h"static const char *TAG = "smartconfig";
void app_main(void)
{bsp_led_init();led5_off();bsp_btn_init();// connect_wifi_test();smartconfig_test();while (1){led4_on();vTaskDelay(1000 / portTICK_PERIOD_MS);led4_off();vTaskDelay(1000 / portTICK_PERIOD_MS);if ((btn_sta()) == 0){led5_on();ESP_LOGI(TAG, "clear wifi config data");esp_wifi_restore();esp_restart();vTaskDelay(1000 / portTICK_PERIOD_MS);}else{led5_off();}}
}
CMakelists.txt为描述main文件夹下面所用到的.c以及.h
项目中main文件夹下面就一个main.c,因此CMakelists.txt内容如下
idf_component_register(SRCS "main.c"INCLUDE_DIRS "")
component.mk笔者也不知道干啥的,里面的内容也是全屏蔽的状态,就不在此多说了。
顶层CMakelists.txt
顶层CMakelists.txt描述了cmake的版本,componets路径以及包含cmake的文件
内容如下
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
#cmake版本
cmake_minimum_required(VERSION 3.5)
#指定需要用到componets的路径
set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}./components/led${CMAKE_CURRENT_LIST_DIR}./components/button${CMAKE_CURRENT_LIST_DIR}./components/wifi${CMAKE_CURRENT_LIST_DIR}./components/confFiFi${CMAKE_CURRENT_LIST_DIR}./components/blu_fi)
#包含cmake文件
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(demo)
components
该文件夹下面的内容均为用户组件,为了规范用户组件,达到便于移植的目的,均采用以下结构,以button为例
| |---button //button文件夹
| | |---bsp_button.c //button.c
| | |---CMakeLists //CMakelists
| | |---include //include文件夹
| | | |---bsp_button.h //button.h
这里着重描述一下CMakelistst文件,该文件指定了组件的构成,以及所用到的用户组件和系统组件,内容如下
idf_component_register(SRCS "bsp_blu_fi.c" INCLUDE_DIRS "include"REQUIRES nvs_flash esp_event esp_wifi wpa_supplicant bt)# PRIV_REQUIRES 该参数指定对其他自定义组件的依赖,即私有依赖项
# REQUIRES 该参数指定对系统组件的依赖,即公共依赖项
#
# 假设 esp_wpa2.h 在components/wpa_supplicant/esp_supplicant/include下,则
# REQUIRES里面只需要添加 wpa_supplicant即可
PRIV_REQUIRES参数指定了用户组件的依赖路径,假设button.c里面使用到了用户自建的组件adc.h
则需要在该参数里面指定adc.h的路径
REQUIRES参数制定了系统组件的路径,假设button.c使用了系统组件esp_wifi.h,则需要指定eso_wifi.h所在的路径,否则编译的时候会提示"No such file or directory",导致项目编译失败。
基于ESP-IDF环境的ESP32-C3开发相关推荐
- ESP32C3基于Arduino框架下的 ESP32 RainMaker开发示例教程
ESP32C3基于Arduino框架下的 ESP32 RainMaker开发示例教程 ESP RainMaker ESP RainMaker 是乐鑫推出的一个端到端平台.基于该平台,用户无需管理基础设 ...
- ESP32 ESP-IDF开发环境搭建,Windows下基于ESP-IDF | Cmake | VScode插件的 ESP32 开发环境搭建
之前的一篇博客 Windows上基于ESP-IDF搭建ESP32开发环境 发布后,深受好评.几个月过去了,乐鑫的esp-idf-tools安装工具发生了较大的变化,VsCode插件的功能也愈加完善 ...
- 使用乐鑫官方资源搭建基于Arduino的ESP32的开发环境
目录 一.配置IDE管理器 二.自动安装板支持包 三.手动安装板支持包 四.网盘的ESP32全系列基本库的板支持包 使用乐鑫官方库搭建Arduino开发环境. 乐鑫官方Github:GitHub - ...
- 在Win10的Linux子系统下搭建ESP32的开发环境
在Win10的Linux子系统下搭建ESP32的开发环境 一.介绍 1.Windows的Linux子系统 win10进行了内置工作于命令行的Linux子系统功能,WIN10用户只需要开启Linux子 ...
- Esp32 C3 Arduino 串口开发(1)
网上合宙的esp32 C3 的测试版 9.9元,简洁小巧,用于学习测试非常方便.原来是装的Luatos,可以直接用Arduino开发.Arduino安装的为最新版 V2.00RC8,有点类似 vSco ...
- 【WiFi模组】乐鑫ESP32 基于ESP-IDF的原生SDK二次开发
一. 开发环境 1.系统环境:Windos10 2.源码框架:官方ESP-IDF 4.4.1 3.编辑代码:VScode 3.开发语言:C语言 4.操作系统:FreeRTOS 二.开发流程 1.下载离 ...
- ESP32 Ubuntu开发环境搭建
在Ubuntu下搭建ESP32开发环境 文章目录 在Ubuntu下搭建ESP32开发环境 说明 开发环境 硬件准备 ESP32(NodeMCU-32S) NodeMCU-32S 引脚图 搭建步骤 安装 ...
- ESP32-C3学习笔记(3):ESP32 C3 IIC总线驱动光照强度传感器(基于ESP-IDF Eclipse)
一.硬件简介 光照强度传感器使用的是物联网俱乐部的智慧路灯案例扩展板E53_SC1,购买连接 https://item.taobao.com/item.htm?spm=2013.1.w4004-222 ...
- Arduino IDE + ESP32系列开发环境配置
前言 ESP32系列开发环境配置教程 ESP32包 链接:https://pan.baidu.com/s/1O3ndDlpH-zL2OcFiLECmVA?pwd=kbcx 提取码:kbcx 已经配置好 ...
- 认识Web前端、Web后端、桌面app和移动app新开发模式 - 基于Node.js环境和VS Code工具...
认识Web.桌面和移动app新开发模式 - 基于Node.js环境和VS Code工具 一.开发环境的搭建(基于win10) 1.安装node.js和npm 到node.js官网下载安装包(包含npm ...
最新文章
- Splay ---- 文艺平衡树区间翻转的建树模式
- 方法总比困难多_只是为了生活
- 【Qt】Visual Studio中无法打开Qt中UI文件
- 超级简便的容器化部署工具(使用 ASP.NET Core 演示)
- PHP怎么检查登录和退出,如何检查用户是否以PHP登录?
- 计算机组成原理(一)计算机系统概述
- Linux 64位进程地址空间分布概况
- 浙大 PAT b1009
- centos7下cups + samba共打印服务的教程
- Tableau上面地图与条形图结合_Tableau 全新地图实战演示,更快、更高、更强
- Application page and Site page
- 弯管机编程软件电脑版_聚编程电脑版
- 【英雄联盟】关于我是如何打上超凡大师的,ADC键位设置
- 计算机表格填充,Excel表格中数据填充功能的使用方法
- 计算机excel实验结果分析,使用Excel2013分析管理表格数据实训演练——想象力电脑应用...
- 九宫格摆法_九张照片墙怎么摆放图,1的九宫格效果图
- Linux rm/rmdir 命令使用介绍
- pygame--图片随键盘移动
- obs多推流地址_腾讯推流直播教程OBS下载、安装、使用
- Power BI-同比、环比、累计值
热门文章
- 【GitHub Desktop】(GitHub Windows桌面版) 中文汉化,(GitHub客户端汉化,非网页端插件)
- java 贝叶斯抠图_毕业论文(设计)基于贝叶斯算法的自动抠图程序设计与实现.doc...
- 计算二叉树叶子结点数目
- 储量级别122b_储量级别代码是什么
- 浅谈SQL注入防御手段
- 开源LitCAD:一个使用C#编写的非常简易的CAD小程序。
- 【毕业设计】深度学习指纹识别算法研究与实现 - python opencv
- 微信小程序中引入 UI 组件库(Vant Weapp)
- 医学计算机ppt模板,计算机与医学.ppt
- 比较热门的物联网服务器的使用