ESP32-新建工程

目录

本文简介

实验平台

正文

一、安装开发环境

1、安装内容

2、启动 ESP-IDF 环境

二、开始创建工程

三、配置工程

四、编译工程

五、烧录到设备

六、监视输出

七、在工程中创建自己的文件夹


本文简介

idf.py 命令行工具提供了一个前端,可以帮助您轻松管理项目的构建过程,它管理了以下工具:

可通过 idf.py 配置构建系统,具体可参考 相关文档

实验平台

①ESP-IDF 版本:release/v5.1

③硬件平台:esp32-s3

版权声明
①作者:coLin

②声明:问题总结,有误解,请联系纠正。

正文
 

一、安装开发环境

快速入门 - ESP32-S3 - — ESP-IDF 编程指南 v5.1 文档

1、安装内容

安装程序会安装以下组件:

  • 内置的 Python

  • 交叉编译器

  • OpenOCD

  • CMake 和 Ninja 编译工具

  • ESP-IDF

        安装程序允许将程序下载到现有的 ESP-IDF 目录。推荐将 ESP-IDF 下载到 %userprofile%\Desktop\esp-idf 目录下,其中 %userprofile% 代表家目录。

2、启动 ESP-IDF 环境

        安装结束时,如果勾选了 Run ESP-IDF PowerShell Environment 或 Run ESP-IDF Command Prompt (cmd.exe),安装程序会在选定的提示符窗口启动 ESP-IDF。

完成 ESP-IDF 工具安装向导时运行 Run ESP-IDF PowerShell Environment
完成 ESP-IDF 工具安装向导时运行 Run ESP-IDF PowerShell Environment

ESP-IDF PowerShell
ESP-IDF PowerShell

完成 ESP-IDF 工具安装向导时运行 Run ESP-IDF Command Prompt (cmd.exe)
完成 ESP-IDF 工具安装向导时运行 Run ESP-IDF Command Prompt (cmd.exe)

ESP-IDF 命令提示符窗口
ESP-IDF 命令提示符窗口

二、开始创建工程

1 、 进入到ESP-IDF目录下,如下图所示

 2、打开ESP-IDF 5.1 PowerShell,默认打开目录为ESP-IDF安装目录

3、创建自己的工程目录

mkdir myPro

此时目录中的文件为下图所示

 4、进入到myPro文件中

cd myPro

5、创建一个工程,文件夹名字是 esp32s3-display

idf.py create-project esp32s3-display

三、配置工程

1、进入 esp32s3-display 目录

2、设置 ESP32-S3 为目标芯片

注意,此操作将清除并初始化项目之前的编译和配置(如有)。您也可以直接将“目标”配置为环境变量(此时可跳过该步骤)。

idf.py set-target esp32s3 

3、然后运行工程配置工具 menuconfig

idf.py menuconfig

 正确操作上述步骤后,系统将显示以下菜单:

工程配置 — 主窗口

您可以通过此菜单设置项目的具体变量,包括 Wi-Fi 网络名称、密码和处理器速度等。示例项目会以默认配置运行,因此在这一项目中,可以跳过使用 menuconfig 进行项目配置这一步骤。 

四、编译工程

idf.py build

如果一切正常,编译完成后将生成 .bin 文件。

五、烧录到设备

idf.py -p PORT flash

请将 PORT 替换为 ESP32-S3 开发板的串口名称(COMx)。如果 PORT 未经定义,idf.py 将尝试使用可用的串口自动连接。

如果一切顺利,烧录完成后,开发板将会复位,应用程序 开始运行。

六、监视输出

您可以使用 idf.py -p PORT monitor 命令,监视 “esp32s3-display” 工程的运行情况。注意,不要忘记将 PORT 替换为您的串口名称。

运行该命令后,IDF 监视器 应用程序将启动。

此时,您就可以在启动日志和诊断日志。

您可使用快捷键 Ctrl+],退出 IDF 监视器。

七、在工程中创建自己的文件夹

1、在工程目录下创建components目录并且在components目录下创建led目录,执行以下命令

idf.py -C components create-component led

 所以,目前整个文件夹是这样的

| ------esp32s3-display
| ------------ components
|                   ------ led
|                           ------ include

|                                   ------ led.h

|                           ------ CMakeLists.txt

|                           ------ led.c 
|  ------------  esp32s3-display.c
|   ------------ CMakeLists.txt

2、在led.c和led.h中加入我们的代码:

led.c

#include <stdio.h>
#include "led.h"
#include "driver/gpio.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"


static void led_task(void *parm);

#define GPIO_LED_R  GPIO_NUM_16
#define GPIO_LED_G  GPIO_NUM_17
#define GPIO_LED_B  GPIO_NUM_18

static unsigned char i=0,j=0;

void kl_drv_led_init(void)
{
    gpio_reset_pin(GPIO_LED_R);
    gpio_set_direction(GPIO_LED_R, GPIO_MODE_OUTPUT);
    gpio_reset_pin(GPIO_LED_G);
    gpio_set_direction(GPIO_LED_G, GPIO_MODE_OUTPUT);
    gpio_reset_pin(GPIO_LED_B);
    gpio_set_direction(GPIO_LED_B, GPIO_MODE_OUTPUT);
    xTaskCreate(led_task, "led_task", 4096, NULL, 3, NULL);
    printf("LED INIT SUCCESS\r\n");
}

static void led_task(void * parm)
{
    while (1) {
        i++;
        if(i==1){
            gpio_set_level(GPIO_LED_R, 1);//把这个GPIO输出高电平
            gpio_set_level(GPIO_LED_G, 0);//把这个GPIO输出低电平
            gpio_set_level(GPIO_LED_B, 0);//把这个GPIO输出低电平
        }else if(i==2){
            gpio_set_level(GPIO_LED_R, 0);//把这个GPIO输出低电平
            gpio_set_level(GPIO_LED_G, 1);//把这个GPIO输出高电平
            gpio_set_level(GPIO_LED_B, 0);//把这个GPIO输出低电平
        } else if(i==3){
            gpio_set_level(GPIO_LED_R, 0);//把这个GPIO输出低电平
            gpio_set_level(GPIO_LED_G, 0);//把这个GPIO输出低电平
            gpio_set_level(GPIO_LED_B, 1);//把这个GPIO输出高电平
            i = 0;
        }
        
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

led.h

#ifndef LED_H
#define LED_H

#ifdef __cplusplus
extern "C" {
#endif
void kl_drv_led_init(void);

#endif

esp32-s3-display.c

#include <stdio.h>
#include "led.h"

void app_main(void)
{
    kl_drv_led_init();
}

注意:直接编译这里会报错

 我们需要在led/CMakeLists.txt中添加REQUIRES driver,如下所示

#加入源文件

#加入头文件

#REQUIRES driver 表明该组件依赖driver系统组件

idf_component_register(SRCS "led.c"

                    INCLUDE_DIRS "include"

                    REQUIRES driver)

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值