Vscode搭建ESP-IDF开发环境指南-Ubuntu ESP32-C3 合宙

news2024/10/7 17:27:04

文章目录

    • 1.Ubuntu环境搭建
    • 2.vscode安装
    • 3.esp-idf插件
    • 如果到这里没出现问题的话,就能顺利安装了,如果出现问题会在输出那一栏里报错,根据错误去找原因就好,常见的错误就是网络原因以及之前的依赖包没有装好 ![](https://img-blog.csdnimg.cn/img_convert/4e3a7cd4c94aa1bd9e2897123e48ca04.png)
    • 配置环境变量
    • 新建点灯工程
      • 修改代码
      • 构建,烧录
    • 串口问题

开发板使用的是合宙的ESP32-C3经典版,因为合宙本身推荐使用合宙推出的LuatOS开发环境,所以没有ESP-IDF相关的教程,只能参考乐鑫官方的ESP-IDF教程。

开发环境使用Ubuntu22.04.1+Vscode+ESP-IDF插件

1.Ubuntu环境搭建

本打算用WSL来开发,但是遇到了WSL2无法直接使用Windows的USB串口的问题,微软本身也提供了解决方案,但最重要的是合宙的这个板子用了ch343这款串口芯片,在wsl上无法安装驱动,所以只能用虚拟机或者直接安装ubuntu双系统的方案了。因为虚拟机用起来有些卡,正好我之前不用的硬盘里还有Ubuntu系统,所以可以直接在硬盘启动ubuntu。参考:ubuntu双系统

系统搭建好了以后需要安装运行ESP-IDF必要的包这一步很重要,否则在装ESP-IDF的时候会报错

sudo apt-get install git wget flex bison gperf python3 python3-venv python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

2.vscode安装

其实也可以不使用vscode直接搭建idf,但是乐鑫官方有vscode的插件,可以省去一些不必要的操作,同时vsocde看源码,写代码也比较方便。

3.esp-idf插件

在这里插入图片描述


安装完成之后ctrl + shift +p输入esp选择espidf configure
在这里插入图片描述


进入下面的界面,选择advanced(如果遇到打不开下面界面的情况,很可能是这个插件的版本问题,重新装一个老版本再试一下)
在这里插入图片描述


  • 在下面选择安装源,如果选github,需要你的浏览器能打开github,如果不行就换个安装源

  • 然后选择ESP-IDF版本,选择最新稳定版即可

  • 选择安装路径

  • 选择工具链的路径

  • 选择python路径
    在这里插入图片描述

如果到这里没出现问题的话,就能顺利安装了,如果出现问题会在输出那一栏里报错,根据错误去找原因就好,常见的错误就是网络原因以及之前的依赖包没有装好

配置环境变量

这个插件并没有配置环境变量,需要手动配置一下
执行命令
. ~/em/esp/esp-idf/export.sh

注意 . 和 ~之间有个空格
这是我设置的路径,具体路径根据export.sh文件所在的路径来

vi ~/.bashrc
输入

export IDF_PATH=/home/linu/em/esp/esp-idf
export PATH="$IDF_PATH/tools:$PATH"

完成后shift+zz保存退出

新建点灯工程

vscode中ctrl+shift+p,选择new project
在这里插入图片描述

在这里插入图片描述
然后点击右下角的choose template后,选择一个模板作为工程模板,选择blink
在这里插入图片描述
生成之后右下角有个yes,点击后会打开一个新页面,里面就是刚才新建的模板工程,如下图所示:

修改代码

开发板上的灯在IO12和IO13上,随便选一个

/* Blink 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 "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "led_strip.h"
#include "sdkconfig.h"

static const char *TAG = "example";

/* Use project configuration menu (idf.py menuconfig) to choose the GPIO to blink,
   or you can edit the following line and set a number here.
*/
#define BLINK_GPIO 13

static uint8_t s_led_state = 0;



static void blink_led(void)
{
    /* Set the GPIO level according to the state (LOW or HIGH)*/
    gpio_set_level(BLINK_GPIO, s_led_state);
}

static void configure_led(void)
{
    ESP_LOGI(TAG, "Example configured to blink GPIO LED!");
    gpio_reset_pin(BLINK_GPIO);
    /* Set the GPIO as a push/pull output */
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
    gpio_set_drive_capability(BLINK_GPIO, GPIO_DRIVE_CAP_MAX);
}
void app_main(void)
{

    /* Configure the peripheral according to the LED type */
    configure_led();

    while (1) {
        ESP_LOGI(TAG, "Turning the LED %s!", s_led_state == true ? "ON" : "OFF");
        blink_led();
        /* Toggle the LED state */
        s_led_state = !s_led_state;
        vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS);
    }
}



构建,烧录

最下面的一栏里有构建,烧录,以及串口监视按钮,还有一键编译烧录,非常方便。
不过也可以使用命令行的方式,需要注意右侧的shell必须是ESP-IDF才能正常使用idf.py命令可以通过下面的一个方框里面一个箭头的按钮打开,否则会提示需要在ESP的虚拟环境中使用该命令
命令行的方式可以通过

idf.py build #编译
idf.py flash #烧录

在这里插入图片描述
烧录完成后,可以看到开发板上的灯以1HZ频率闪烁

串口问题

这个开发板使用的是CH343,系统上一般没有,需要安装驱动

github地址
使用说明里面有具体步骤,但是在sudo make load的时候遇到了需要签名的问题,这方面第一次遇见,不太懂,然后参考这篇帖子解决了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/482829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优思学院|受控文件在质量管理体系中的作用?

在质量管理体系中&#xff0c;受控文件是指受到控制和管理的文件&#xff0c;包括政策、程序、指南、规程、说明书、作业指导书、记录等&#xff0c;它们记录了组织内各种活动的要求和实施方法&#xff0c;并规定了文件的创建、审批、发布、变更和废止等流程&#xff0c;以确保…

宝塔怎么安装青龙面板-跑京东豆脚本

一、搭建青龙面板 安装docker管理器 我们使用宝塔的Docker管理器来一键安装Docker 在软件商店内搜索Docker,直接安装第一个应用即可。 拉取镜像运行容器 在安装完docker之后我们就可以开始拉取docker镜像并运行容器了,ssh连接服务器命令行中输入下面的代码: docker run …

TOGAF架构内容—TOGAF 内容框架和企业元模型

一、概述 TOGAF ADM 提供了一个流程生命周期&#xff0c;用于在企业内创建和管理架构。在 ADM&#xff0c;对输入、输出和步骤的讨论&#xff0c;描述了许多架构工作产品或工件&#xff0c;例如过程和 应用。 此处提供的内容框架和企业元模型为这些术语定义了正式结构&#x…

【python】NameError: No such file or directory 问题解决

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 1. 问题 最近有小伙伴经常问到这个报错&#xff0c;今天来分享一下具体怎么解决。 [Errno 2] No such file or directory: ./mnist_image_label/mnist_train_jpg_60000.txt这个没有查找到子文件或者子文件夹的问题 2. 解决…

WIZnet 的 TOE 设计大赛

链接: TOE Design Contest 介绍 欢迎来到 WIZnet 的年度物联网设计大赛&#xff01; TOE 竞赛是对您的 IoT 技能和创造力的终极考验。 借助强大的 W5300 网络控制器芯片&#xff0c;您将能够以前所未有的方式将您的物联网愿景变为现实。 无论您是经验丰富的专业人士还是刚刚起…

计算机提示vcruntime140.dll丢失是什么意思?vcruntime140.dll丢失的解决方法(详细方法)

计算机丢失vcruntime140.dll是什么意思&#xff1f;经常看到有小伙伴有在网上问这样的问题&#xff0c;电脑上这个vcruntime140.dll文件丢失的问题经常发生吧&#xff0c;那么就很有必要给大家详细的说说这一方面的问题了&#xff0c;下面我们来看看 第一&#xff1a;vcruntim…

RocketMQ的简单使用

大家好&#xff0c;我是Leo&#xff01;今天来和大家分享RocketMQ的一些用法。 领域模型介绍 Producer: 用于生产消息的运行实体。 Topic: 主题&#xff0c;用于消息传输和存储的分组容器。 MessageQueue: 消息传输和存储的实际单元容器。 Message: 消息传输的最小单元。 C…

如何让你的 WebSocket 接口测试更高效?拯救你的接口测试工作

目录 引言 WebSocket介绍 HTTP与WebSocket的区别 WebSocket测试方法 使用在线工具 使用Postman 使用Jmeter 使用Python 结语 引言 你是否曾经为 WebSocket 接口测试中复杂的协议和难以捕获的数据而感到束手无策&#xff1f;WebSocket 协议与传统的 HTTP 协议不同&…

【牛客网】美国节日与因式分解

目录 一、编程题 1.美国节日 2.因式分解 一、编程题 1.美国节日 链接&#xff1a;美国节日__牛客网 (nowcoder.com) 和中国的节日不同&#xff0c;美国的节假日通常是选择某个月的第几个星期几这种形式&#xff0c;因此每一年的放假日期都不相同。具体规则如下&#xff1a…

volatile与synchronized

文章目录 前言一、简介volatilesynchronized 二、名词解释可见性原子性指令重排临界区对象锁类锁 二、实战使用1 Volatile可以解决的问题2 volatile无法解决非原子性操作问题--synchronized 总结 前言 volatile与synchronized 都是java的关键字 volatile一般修饰变量,被修饰的…

做了一年csgo搬砖项目,还清所有债务:会赚钱的人都在做这件事 !

前段時间&#xff0c;在网上看到一句话&#xff1a;有什么事情&#xff0c;比窮更可怕&#xff1f; 有人回答说&#xff1a;“又忙又窮。” 很扎心&#xff0c;却是绝大多数人的真实写照。 每天拼死拼活的996&#xff0c;你有算过你的時间值多少钱&#xff1f; 我们来算一笔…

操作系统——死锁

0.关注博主有更多知识 操作系统入门知识合集 目录 5.1死锁概念 5.2死锁的起因 5.3预防死锁的策略 思考题&#xff1a; 5.1死锁概念 在介绍死锁之前&#xff0c;先来探究一个问题&#xff1a;哲学家就餐问题。五个哲学家围坐在圆桌边&#xff0c;有5支筷子&#xff0c;哲…

免费的绘图工具DrowIO下载及安装

还在为论文绘图而烦恼吗&#xff1f;还在为如何选择画图工具而烦恼吗&#xff1f;没事&#xff0c;本期就给你们推荐一款超级好用且免费的绘图工具——DrawIO。 目前使用比较多的绘图工具有&#xff1a;Visio、亿图图示、Word、PPT、DrawIO等 其中DrawIO由于其既实用又免费的…

使用 Esp32 和 TinyML 进行手势分类

介绍 手势分类是机器学习可以做什么的一个简单但同时又很好的例子。它使用大量“混乱”的数据来对事物进行分类。 在这个项目中,我们将制作一个包含 4 个类的分类器,idle、up_down、left_right 和 circle。 数据采集 要将数据上传到 Edge Impulse,我们需要使用 Edge Imp…

199. 二叉树的右视图【111】

难度等级&#xff1a;中等 上一篇算法&#xff1a; 236. 二叉树的最近公共祖先【190】 力扣此题地址&#xff1a; 199. 二叉树的右视图 - 力扣&#xff08;Leetcode&#xff09; 1.题目&#xff1a;199. 二叉树的右视图 给定一个二叉树的 根节点 root&#xff0c;想象自己站在…

JavaScript事件

事件流描述的是从页面接收事件的顺序。比如说单击了某个按钮&#xff0c;但是单击事件不仅发生在按钮上&#xff0c;在单击按钮的同时&#xff0c;也单击了按钮的容器元素&#xff0c;甚至是 <body> 、<html> 、document。 事件传播的顺序不同导致存在两种事件流机…

初识CPU(二)

目录 一、控制器的功能与工作原理 1.控制器的设计思路 2.控制器的分类 3.微程序 3.1微命令 3.2微操作 3.3微指令 3.4微程序 3.5微地址 4.控制方式 4.1同步控制方式 4.2异步控制方式 4.3联合控制方式 4.4人工控制方式 二、微指令 5.微指令的编码方式 5.1直接编码…

基于springboot的家政服务管理平台(源码,设计文档等)

摘要 随着家政服务行业的不断发展&#xff0c;家政服务在现实生活中的使用和普及&#xff0c;家政服务行业成为近年内出现的一个新行业&#xff0c;并且能够成为大众广为认可和接受的行为和选择。设计家政服务管理平台的目的就是借助计算机让复杂的销售操作变简单&#xff0c;…

kafka的安装与使用

文章目录 kafka安装1 上传安装包2 解压安装包3 创建logs文件夹4 修改配置文件5 分发kafka6 启动kafka kafka使用1 启动kafka2 关闭kafka3 查看topic4 创建topic,名称为test5 删除名称为test的topic6 向topic发送数据7 从topic里消费数据 kafka安装 kafka安装前需要确认zookeep…

《程序员面试金典(第6版)面试题 16.09. 运算

题目描述 请实现整数数字的乘法、减法和除法运算&#xff0c;运算结果均为整数数字&#xff0c;程序中只允许使用加法运算符和逻辑运算符&#xff0c;允许程序中出现正负常数&#xff0c;不允许使用位运算。 你的实现应该支持如下操作&#xff1a; Operations() 构造函数minus…