ESP32 esp-idf esp-adf环境安装及.a库创建与编译

article/2024/7/13 9:51:11

简介

ESP32

功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。

ESP-IDF 官方物联网开发框架。

ESP-ADF 官方音频开发框架。

文档参照

https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index.html#get-started-step-by-step

ESP-IDF

windows建议直接安装exe

https://dl.espressif.cn/dl/esp-idf/?idf=4.4

从上面这个网址,下载offline installer的,一般会有3到4个版本,选择一种就行了,这里是建议往下拉,选择4.4版本,它适配的ESP-ADF版本比较多。
esp-idf windows安装包

exe下载完,直接安装,安装后会在桌面或开始菜单中添加 “ESP-IDF 4.4 CMD”, "ESP-IDF 4.4 PowerShell"的图标,
esp-idf安装后快捷图标

直接点击"ESP-IDF 4.4 CMD"会弹出一个cmd窗口,。

会打印类似这种信息, 它会自动配置好python, git , esp-idf的环境。

Setting PYTHONNOUSERSITE, was not set
Using Python in C:\Espressif\python_env\idf4.4_py3.11_env\Scripts\
Python 3.11.2
Using Git in C:\Espressif\tools\idf-git\2.39.2\cmd\
git version 2.39.2.windows.1
Setting IDF_PATH: C:\Espressif\frameworks\esp-idf-v4.4.6

ESP-ADF

安装完ESP-IDF,接下来安装ESP-ADF, 它属于IDF的扩展,要先安装好IDF,再安装ADF。

ESP-IDF与ESP-ADF有对应关系的,版本要对的上,版本对应信息及开发板对应的SDK可以从这个链接查看

https://github.com/espressif/esp-adf/blob/master/README.md#idf-version

安装git bash

要下载源码,需要先安装git bash

官方下载地址:https://www.git-scm.com/download/

选择for windows版本下载,然后安装。

下载ESP-ADF源码

下载ESP-ADF源码,在windows中,打开git bash,输入以下指令进行下载, 这里指定下载到D:\work\c1\,可以根据需要更改

cd D:\work\c1\
git clone --recursive https://gitee.com/EspressifSystems/esp-adf.git

如果出错了,提示timeout , error之类的, 可能是子模块下载失败了。

可以这样解决, 先进入esp-adf目录

cd esp-adf

然后再执行下面这个指令,如果出错,多执行几次

git submodule update --init --recursive

编译示例代码

打开安装IDF后的"ESP-IDF 4.4 CMD",会进入一个cmd命令窗口,

先进入ESP-ADF的源码目录

d:cd D:\work\c1\esp-adf

执行配置adf环境的指令

export.bat

进入播放sdcard音乐的示例目录

cd examples\player\pipeline\_play\_sdcard\_music

指定主板类型,比如esp32s3

idf.py set-target esp32s3

编译示例代码

idf.py build

编译成功后会生成build\play_sdcard_music.bin

烧录

用usb转串口,连接电脑与设备,假设连接后串口为COM3, 默认的波特率为460800

则烧录指令如下

idf.py -p COM3 -b 460800 flash

ESP-ADF创建.a库

进入ESP-ADF的源码,在example创建generate_static_library路径

创建静态库项目hello_world

generate_static_library目录下创建

components\hello_world

CMakeLists.txt

    idf_component_register(SRCS "hello_world.c"INCLUDE_DIRS "./include")

component.mk文件

    ## "main" pseudo-component makefile.## (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)

hello_world.c

#include <stdio.h>#include "hello_world.h"void hello_world(void)
{printf("hello world!\n");
}

include\hello_world.h

    #ifndef _HELLO_WORLD_H_#define _HELLO_WORLD_H_#include "string.h"#include "stdio.h"#ifdef __cplusplusextern "C"{#endifvoid hello_world(void);#ifdef __cplusplus}#endif#endif

创建调用hellow_world库的工程

generate_static_library目录下创建

CMakeLists.txt test.c component.mk放main/目录

test.c源码, 调用上面hello_world中的函数

#include <stdio.h>#include "hello_world.h"void app_main(void)
{hello_world();
}

CMakeLists.txt

    idf_component_register(SRCS "test.c"INCLUDE_DIRS ".")

component.mk文件

    ## "main" pseudo-component makefile.## (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)

generate_static_library目录下创建

CMakeLists.txt

# The following five lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(test)

Makefile

    ## This is a project Makefile. It is assumed the directory this Makefile resides in is a# project subdirectory.#PROJECT_NAME := testinclude $(IDF_PATH)/make/project.mk

编译

电脑中打开"ESP-IDF 4.4 CMD",
cd 进入generate_static_library目录,
编译

idf.py build

会生成test.bin在目录examples\generate_static_library\build中,
libhello_world.a也会生成,在目录generate_static_library\build\esp-idf\hello_world中。
生成的.a库
作者:帅得不敢出门 csdn原创谢绝收录转载


http://www.ngui.cc/article/show-2201921.html

相关文章

【EverEdit】活用 EverEdit 小技巧

【EverEdit】活用 EverEdit 小技巧 &#xff08;1&#xff09;设置 EverEdit 对比文件文本内容 设置如下图所示&#xff1a; 首先要先打开要对比的文本文件&#xff0c;和对比文件相比&#xff0c;此时打开了至少两个文件&#xff1a; 选择文件比较&#xff1a; &#xff08…

35岁,是终点?还是拐点?

35岁&#xff0c;是终点还是拐点&#xff0c;取决于我们对生活和事业的态度、目标以及行动。这个年龄可以看作是一个重要的转折点&#xff0c;具有多重意义和可能性。 很多人在35岁时&#xff0c;已经在自己的职业生涯中建立了一定的基础&#xff0c;可能达到了管理层或专家级别…

[职场] 护理专业简历怎么写 #经验分享#微信

护理专业简历怎么写 很多想成为一名护理方面的从业者&#xff0c;但是又不知道应该怎么制作一份简历&#xff0c;现在这里分享了一份护理方面的简历模板供大家参考。 蓝山山 年龄&#xff1a;24 号码&#xff1a;12345678910 地址&#xff1a;上海市 邮箱&#xff1a;jianliji…

墨刀原型工具-小白入门篇

墨刀原型工具-小白入门篇 简介 随着互联网的发展和用户体验的重要性越来越受到重视&#xff0c;原型设计逐渐成为了产品设计中的重要环节。墨刀作为一款原型设计工具&#xff0c;以其简洁、易用的特点&#xff0c;受到了很多设计师的喜爱。本文将介绍墨刀原型工具的基本使用方…

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维&#xff0c;在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现&#xff1a;坐标校正&#xff0c;我们如何使漫无目的鼠标点击变得有序化和可控化呢&#xff1f; 目录 一、从鼠标监听到获取坐标 1.MouseListener和Mouse…

揭秘未来艺术:AI绘画工具全面介绍

&#x1f4d1;前言 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们生活的方方面面。在艺术创作领域&#xff0c;AI技术同样展现出了其独特的魅力。今天&#xff0c;我们就来一起探索这个神秘而引人入胜的领域&#xff0c;深入了解AI绘画…

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题&#xff1a;第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

轻量级在线服装3D定制引擎Myway简介

我写的面向web元宇宙轻量级系列引擎中的另外一个&#xff0c;在线3D定制引擎Myway 3D。 用于在线商品定制&#xff0c;比如个性化服装的定制、日常用品&#xff08;如杯子&#xff09;、家装&#xff08;被套&#xff09;等物品的在线定制。 特性列表&#xff1a; 可更换衣服…

C++的模板(八):子系统

平常所见的大部分模板代码&#xff0c;模板所传的参数类型&#xff0c;到了模板里面&#xff0c;或实例化为对象&#xff0c;或嵌入模板内部结构中&#xff0c;或在模板内又派生了子类。不管怎样&#xff0c;最终他们在模板内&#xff0c;直接或间接&#xff0c;都实例化成对象…

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、定时器介绍 定时器介…