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

简介

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 __cplusplus
    extern "C"
    {
    #endif

    void 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 := test

    include $(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库

相关文章

esp32专栏文章
ESP32代码开发入门
ESP32-IDF http请求崩溃问题分析与解决
作者:帅得不敢出门 csdn原创谢绝收录转载
### MicroSIPESPADF的功能区别联系 #### 1. **功能对比** MicroSIP 是一款基于 SIP 协议的开源软电话软件,主要用于 VoIP 通信。它支持多种操作系统,并可以通过自定义编译来适配特定平台[^1]。 相比之下,ESP-ADFEspressif Audio Development Framework)是一个由 Espressif 提供的音频开发框架,专为 ESP32 系列芯片设计。该框架集成了 Wi-Fi、蓝牙以及丰富的外设接口,适用于构建复杂的物联网音频设备应用[^2]。 两者的主要功能差异如下: - **MicroSIP 的核心功能** - 支持标准 SIP 和 RTP 协议。 - 实现语音通话、视频通话等功能。 - 可通过插件扩展实现更多特性,例如文件传输或即时消息传递。 - 需要运行在具备一定计算能力的操作系统上(如 Windows 或 Linux)。 - **ESP-ADF 的核心功能** - 主要用于嵌入式环境下的音频处理任务。 - 提供完整的音频流管理工具链,包括录音、播放、音效增强等。 - 原生支持 Wi-Fi 和蓝牙模块,便于连接到云端或其他网络服务。 - 更适合资源受限的小型硬件设备。 #### 2. **技术架构上的联系** 尽管两者的应用场景不同,但在某些情况下可以结合使用。例如,在一个 IoT 设备中,可以利用 ESP-ADF 处理本地音频输入输出,而通过集成 MicroSIP 来完成远程 SIP 会话控制。这种组合能够满足既需要低功耗又需要高质量实时通讯的需求[^3]。 具体来说: - 微控制器单元 (MCU) 上部署 ESP-ADF 进行基础信号采集和预处理; - 将经过编码后的数据发送至更高性能处理器或者云服务器端执行复杂运算逻辑,比如运行完整版 MicroSIP 客户端实例。 #### 3. **适用场景分析** - 如果目标是创建桌面级或多用途跨平台 IP Phone,则应优先考虑采用像 MicroSIP 这样的成熟解决方案。 - 对于希望打造便携式无线音响系统或者其他小型化联网多媒体终端产品的企业而言,选择 ESP-ADF 显然更加合适。 以下是两个典型例子中的可能配置方式说明: | 特性 | MicroSIP | ESP-ADF | |---------------------|-----------------------------------|------------------------------------| | 平台依赖 | PC, Android | ESP32 | | 开发难度 | 较高 | 中等 | | 是否内置GUI | 是 | 否 | | 网络协议支持 | SIP/RTP | HTTP/MQTT/BLE | --- ```c // 示例代码片段展示如何初始化 Opus 编码器并将其链接到 MicroSIP 工程中 #include "opus.h" int main() { int error; OpusEncoder *encoder; encoder = opus_encoder_create(48000, 2, OPUS_APPLICATION_VOIP, &error); if(error != OPUS_OK){ printf("Error initializing the encoder\n"); return -1; } // Further integration steps omitted here... } ``` 上述 C 语言程序展示了怎样调用 libopus 函数以设置一个新的 Opus 编码对象作为后续操作的基础组件之一[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅得不敢出门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值