【必看】ESP32-C3 IDF+VsCode 开发环境搭建(ubuntu 22.04)

详细可阅读官方文档😃(release/v4.4):点此进入

一、 安装准备🛠︎

1.1 工具链安装

  • 编译 ESP-IDF 需要以下软件包
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

1.2 获取ESP-IDF

  • 在围绕 ESP32-C3 构建应用程序之前,请先获取乐鑫提供的软件库文件 ESP-IDF 仓库。简而言之就是clone GitHub官方仓库,后续需要在该库文件里配置。
  • 打开终端,创建文件夹esp,进入到该文件夹,进行克隆(需要魔法)。
mkdir -p ~/esp
cd ~/esp
git clone -b release/v4.4 --recursive https://github.com/espressif/esp-idf.git

克隆过程中比较缓慢,耐心等待,可能遇到下载中断等异常。

1.3 设置工具

  • 继续上方,克隆完成后需要对ESP-IDF进行设置,输入下面的指令完成设置
cd ~/esp/esp-idf
./install.sh esp32c3

简而言之就是运行esp-idf目录下的install.sh脚本,查看该脚本其实就是安装一些ESP-IDF的工具和python相关包等

二、测试例程🧪

  • 继续上方,安装好后我们可以测试一个hello_world例程,该例程在esp-idf/examples/get-started/hello_world里,我们把它拷贝到其他地方去。
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
  • 到此还不能直接编译工程!因为编译工程之前,需要先在该终端运行esp-idf目录下的export.sh脚本,之后就可以使用idf.py命令编译、烧录了。
  • 这里需要注意,换一个终端需要重新运行export.sh脚本(具体为何可以阅读该脚本),所以为了避免我们每次都需要进入esp-idf目录下运行该脚本的麻烦,所以需要设置环境变量,之后就可以不依靠esp-idf目录,起到esp-idf和工程分离的作用。

三、配置环境变量🖖

环境变量可以配到.profile、.bashrc、.zprofile里,这里配置到位于home里的./bashrc里,bash每次启动时都会加载。

  1. 设置环境变量 .bashrc
sudo vim ~/.bashrc 
  1. 在末尾增加以下
export IDF_PATH=~/esp/esp-idf
alias get_idf='. $IDF_PATH/export.sh'

IDF_PATH: esp-idf目录的路径,在一些脚本里都会使用。
get_idf:添加命令的别名,之后不需要再去esp-idf目录下运行export.sh,运行 get_idf 即可。

四、编译工程🥭

现在可以进入到hello_world里进行编译了。

  1. 编译工程需要用到idf.py,后续的烧录、调用监视器等都是用此工具。
  2. 但使用idf.py需要执行export.sh脚本,因为上一步把执行该脚本的指令已经添加了环境变量,所以只需要调用get_idf即可。
  3. 如果调用get_idf提示 ‘未找到命令’,可能因为没有配置好环境变量。
  4. 之后终端再输入get_idf
  5. 终端提示如下,可以使用idf.py工具了。
Done! You can now compile ESP-IDF projects.
Go to the project directory and run:idf.py build
  • 选择目标芯片
idf.py set-target esp32c3
  • 编译工程
idf.py build
  • 终端提示如下编译成功
......
r/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/blink.bin
or run 'idf.py -p (PORT) flash'

之后可以在这基础上一些列步骤可以写成shell脚本

五、连接串口,烧录程序 🍾

  1. 连接开发板到ubuntu下,查看dev下的所有tty设备
ls /dev/tty*
  1. 会显示很多tty开头的字符设备,不同的电脑或开发板会有差异,我这里开发板的串口是ttyUSB0
  2. 之后下载到flash并打开监视器查看log的输出,快捷键Ctrl+] 退出IDF监视器。
idf.py -p /dev/ttyUSB0 -b 1152000 flash monitor 

-p: 指定端口
-b: 指定烧录波特率 1152000
monitor:IDF监视器

  1. 下载失败可能是没有对串口字符设备没有读写的权限,可以直接把ttyUSB的权限开到最大,但不是长久的解决方法。
  2. 将用户添加到 dialout 组,从而获许读写权限:
sudo usermod -a -G dialout $USER

或者

sudo usermod -a -G uucp $USER
  1. 更多有关 idf.py 参数的详情,请见 idf.py。

六、使用VsCode开发

VSCode使用SSH无密码连接Ubuntu

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

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

相关文章

【信息系统项目管理师知识点速记】质量管理:控制质量

控制质量是为了评估绩效,确保项目输出完整、正确且满足客户期望,而监督和记录质量管理活动执行结果的过程。控制质量过程需要在整个项目期间开展,其目的是测量产品或服务的完整性、合规性和适用性,以确保项目达到主要干系人的质量要求。 12.5.1 输入 项目管理计划 质量管理…

JavaSE_抽象类(抽象类概念、语法、、特性、作用)

前言 在上一节中,我们讲解了JAVA中的继承,在本节讲解java中抽象类与接口,这个在程序设计中是非常重要的。 一、什么是抽象类 1.1 抽象类概念 基本概念: 在面向对象的概念中,所有的对象都是通过类来描绘的&#xff0…

动态规划——背包问题(01,完全,多重)

一、01背包问题 1.题目描述 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。 01背包问题特点&…

客户管理软件排行榜:对比18款CRM

本文将对比18个客户管理软件:纷享销客、Zoho CRM、Salesforce、HubSpot CRM、Pipedrive、Freshsales、Microsoft Dynamics 365 CRM、Insightly CRM、Nimble CRM、Apptivo CRM、SugarCRM、白码CRM、简信CRM、销帮帮CRM、Teamface企典CRM、神州云动CRM、悟空CRM、八百…

由于找不到msvcp120.dll,无法继续执行代码的5种解决方法

在操作计算机的过程中,您或许会遇到这样一种情形:当试图启动某个软件应用程序时,系统突然弹出一个错误提示框,明确指出“找不到msvcp120.dll”,它会导致程序无法正常启动或运行。为了解决这个问题,我总结了…

详细分析Java中的@Service注解

目录 1. 基本知识2. Demo2.1 传统形式2.2 注解形式 3. 总结 1. 基本知识 Service 是 Spring Framework 中的一个注解,用于标识一个类为服务层组件 服务层(Service Layer): 服务层是应用程序的一个层次结构,位于控制层…

OpenNJet:云原生技术中的创新者与实践者

目录 引言OpenNJet介绍OpenNJet优势1. 性能无损动态配置2. 灵活的CoPilot框架3. 支持HTTP/34. 支持国密5. 企业级应用6. 高效安全 OpenNJet 编译与安装环境准备编译环境配置配置yum源yum 安装软件包创建符号连接修改 ld.so.conf 配置 编译代码 部署 WEB SERVER配置OpenNJet部署…

深入探索JDK:Java开发工具包的奥秘

深入探索JDK:Java开发工具包的奥秘 随着信息技术的飞速发展,Java作为一种广泛使用的编程语言,在各个领域都发挥着重要作用。而JDK(Java Development Kit,Java开发工具包)作为Java编程的基础,其…

k8s的架构组成

一 k8s的概述 1.1 概述 k8s是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务,通过k8s能够进行应用的自动化部署和扩缩容。 k8s可以创建多个容器,每个容器运行一个应用实例,然后通过内置的负载均衡策略,实现…

Docker安装gitlab后连接内置pgsql修改用户信息

Docker安装gitlab后连接内置pgsql修改用户信息 进入gitlab容器 docker exec -it gitlab /bin/bash 进入postgresql su - gitlab-psql 连接pgsql psql -h /var/opt/gitlab/postgresql -d gitlabhq_production 命令行直接执行SQL语句 psql -h /var/opt/gitlab/postgresql…

HCIP-Datacom-ARST必选题库_BGP【道题】

1.关于summary automatic命令和BGP聚合的描述,错误的是? 该命令用于实现自动聚合,其优先级高于手动聚合 配置该命令后,BGP将按自然网段聚合路由 该命令用来使能对本地引入的路由进行自动聚合 配置该命令后,BGP只向对等体发送聚合后的路由 1.关于summary automatic命令和BGP聚…

Vue入门到关门之Vue3项目创建

一、vue3介绍 1、为什么要学习vue3? vue3的变化: 首先vue3完全兼容vue2,但是vue3不建议用vue2的写法;其次,vue3拥抱TypeScript,之前vue2使用的JavaScript,ts完全兼容js 最后之前学的vue2 是…

面试经典150题——找出字符串中第一个匹配项的下标

面试经典150题 day23 题目来源我的题解方法一 库函数方法二 自定义indexOf函数方法三 KMP算法 题目来源 力扣每日一题;题序:28 我的题解 方法一 库函数 直接使用indexOf函数。 时间复杂度:O(n) 空间复杂度:O(1) public int str…

(数据分析方法)长期趋势分析

目录 一、定义 二、目的 三、方法 1、移动平均法 (1)、简单移动平均法 (2)、加权移动平均法 (3)、指数平滑法 2、最小二乘法 3、线性回归 1、数据预处理 2、观察数据分布建立假设模型 3、定义损失函数 4、批量梯度下降 5、优化 4、LSTM 时序分析 5、特征工程 一…

vue3中的reactive和ref

🌏总结:reactive 适用于创建复杂的响应式对象,而 ref 则适用于创建简单的响应式值。 reactive 和 ref 是 Vue 3 Composition API 中用于创建响应式数据的两种主要方式,它们的作用如下: 响应式数据管理: rea…

OCC笔记:图形可视化的实现方式

注:文中参看的occ的源码版本为7.4.0 1、实现思路概览 整体架构 主要有3大块:AIS(Application Interactive Services ,直译为:应用程序交互服务)、Graphics(图形)、Geometry & T…

嵌入式交叉编译:Unable to find arm_neon.h

找到文件 搜索了一下,具体目录是: /opt/linux/x86-arm/aarch64-mix210-linux/lib/gcc/aarch64-linux-gnu/7.3.0/include/arm_neon.h 解决办法 INC_ARM/opt/linux/x86-arm/aarch64-mix210-linux/lib/gcc/aarch64-linux-gnu/7.3.0/include./configure …

Spring Security + JWT 实现登录认证和权限控制

Spring Security JWT 实现登录认证和权限控制 准备步骤 准备好一些常用的工具类,比如jwtUtil,redisUtil等。引入数据库,mybatis等,配置好controller,service,mapper,保证能够正常的数据请求。…

书籍推荐|经典书籍ic书籍REUSE METHODOLOGY MANUALFOR等和verilog网站推荐(附下载)

大家好,今天是51过后的第一个工作日,想必大家都还没有完全从节假日的吃喝玩乐模式转变为勤勤恳恳的打工人模式,当然也包括我,因此这次更新主要是分享几篇书籍和verilog相关的学习网站~ 首先是一本数字电路相关的基础书籍&#xf…

如何让你的排单更快?

一般我们都喜欢做打板借用快速通道!但是目前快速通道也是共享通道,独立单元格基本不开发。 想要排单更快,想要隔夜打板,我们到底应该怎么做呢? 想要排单更快,说白了就是要提高你的交易速度!一&a…