ESP32-idf学习(一)搭建环境和点灯

一、前言

先说一下查到的数据(不保证准确):

1、连续四年Wi-Fi MCU全球市场份额第一,产品应用于智能家居、工业自动化、医疗健康等泛IoT领域‌,2024 年营收突破 20 亿元(同比 +40%),净利润增长 149%,毛利率稳定在 40% 以上‌

2、GitHub上基于乐鑫芯片的开源项目超55,000个,C语言生态活跃度全球领先‌

3、ESP8266、ESP32 等系列芯片长期占据市场主流,累计出货量超 10 亿颗,验证了高稳定性和成本优势‌

之前接触乐鑫最多的还是8266,但都是搭配主mcu用的AT指令来开发,基本没怎么接触过乐鑫的安卓或者idf这些开发环境。感觉现在乐鑫已经是非常主流的产品,手上刚好有一块8266和2块合宙的espc3开发板在吃灰,就用c3来学习一下。

二、搭建环境

1、硬件方面

用的是合宙的ESP32-C3,售价仅9.9元(含税包邮),是同类产品中价格最低的RISC-V架构Wi-Fi/BLE双模开发板‌,已经没有很久了!不得不说我是赶上了好时候,当时就盯着合宙的开发板,有很多没买现在都有点后悔。当时我买来也有做过开发,但当时是用的合宙的luat,他们写的sdk,lua用习惯之后还挺好用的,后来换公司之后就没用过,现在逐渐忘记了。

2、软件方面

现在搭建的是idf的环境,而不是合宙的luat

环境我很久之前就搭建过,但我记得我只是用vscode下载了ESP-IDF这个插件,但git和Python这些我电脑之前都有,所以我也不知道是否下载这个插件就可以。

下载插件之后点图标然后点ADVANCED,服务器选Espressif

我的环境是5.4,当时选了最新的版本安装。

这里有一篇文章是比较详细的,windows和linux环境下都有,跟着操作问题就不大

ESP32-C3 VScode开发环境搭建(基于ESP-IDF—Windows和Ubuntu双环境)-阿里云开发者社区

三、例程选择

1、打开例程

安装好之后点插件会弹出这个界面,点例程

选刚刚下载的框架

点这个gpio例程

点击后右边就有很详细的说明

然后点蓝色的创建例程,选择文件夹保存就行

2、查看例程

查看例程的main函数,初始化、然后创建gpio的测试任务,都很清晰

有做输出的和输入的

3、编译

先把串口和芯片类型选好

然后点编译

一开始我编译是报错了,然后我deepseek了一下,是因为我的路径5,4有个逗号,

因为之前装的,装的时候是我自己输的5,4还是默认是这个 我忘记了,改一下就好

我就重新配置了一下,改成5_4

然后编译成功了,现在变成这样了,我记得以前是没有这个框的

四、修改例程

1、led的io

合宙的资料有介绍,灯的io是12和13

点进gpio.h看一下这个输出io的函数

找到io的结构体

2、初始化

我只是驱动2个led,下边的暂时都用不上,直接先屏蔽了

然后依葫芦画瓢就可以了

3、主循环

循环里就将io改一下就行

四、烧录验证

编译烧录程序,我这块开发板是用uart烧录了,jtag还没看是怎么接

这是烧录完的提示

灯的效果是闪烁的,视频就没什么必要整了,放个图片让大家知道灯亮起来就好^_^

五、总结

总的来说,点灯的这个过程还是挺简单的,但每个品牌的芯片第一步搭建环境总会多多少少都有磕绊,好处是玩这个的人多,网上一搜基本就能搜出来什么问题。

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

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

相关文章

hooker frida版just_trust_me.js 2025升级 支持boringssl unpinning

曾几何时,我翻版了 Xposed 的 just_trust_me.apk, just_trust_me.js 脚本仿佛是一张通行证,让我们在 SSL Pinning 的高墙前轻松穿越。 但时代变了。BoringSSL、Cronet、静态 inline hook、动态 verify callback……一切都变得更加隐蔽和棘手…

通信算法之269 : OFDM信号的循环自相关特性用于无人机图传信号识别

OFDM信号的循环自相关特性是其循环平稳性的核心体现,如下: [相关仿真代码,联系,提供] 一、循环自相关特性来源 ‌循环前缀引入周期性‌ OFDM符号通过添加循环前缀(CP)形成符号周期结构,导致信号具有循环平稳性‌26。每个符号的CP与尾部数据重复,在时延等于FFT长度(N…

vue3环境搭建、nodejs22.x安装、yarn 1全局安装、npm切换yarn 1、yarn 1 切换npm

vue3环境搭建 node.js 安装 验证nodejs是否安装成功 # 检测node.js 是否安装成功----cmd命令提示符中执行 node -v npm -v 设置全局安装包保存路径、全局装包缓存路径 在node.js 安装路径下 创建 node_global 和 node_cache # 设置npm全局安装包保存路径(新版本…

基于尚硅谷FreeRTOS视频笔记——6—滴答时钟—上下文切换

FreeRTOS滴答 FreeRTOS需要有一个时钟参照,并且这个时钟不会被轻易打断,所以最好选择systick 为什么需要时间参照 就是在高优先级任务进入阻塞态后,也可以理解为进入delay()函数后,需要有一个时间参照&…

使用最新threejs复刻经典贪吃蛇游戏的3D版,附完整源码

基类Entity 建立基类Entity,实现投影能力、动画入场效果(从小变大的弹性动画)、计算自己在地图格位置的方法。 // 导入gsap动画库(用于创建补间动画) import gsap from gsap// 定义Entity基类 export default class …

Redis——网络模型之IO讲解

目录 前言 1.用户空间和内核空间 1.2用户空间和内核空间的切换 1.3切换过程 2.阻塞IO 3.非阻塞IO 4.IO多路复用 4.1.IO多路复用过程 4.2.IO多路复用监听方式 4.3.IO多路复用-select 4.4.IO多路复用-poll 4.5.IO多路复用-epoll 4.6.select poll epoll总结 4.7.IO多…

Jenkins 多分支流水线: 如何创建用于 Jenkins 状态检查的 GitHub 应用

使用 Jenkins 多分支流水线时,您可以将状态检查与 GitHub 拉取请求集成。 以下是状态检查的示例 要实现这些类型的状态检查,您需要创建一个与 Jenkins 主实例集成的 GitHub 应用。 在本博客中,我们将介绍如何创建一个 GitHub 应用&#xff…

大模型如何突破“知识盲区”?一场静悄悄的技术革命正在发生

大模型如何突破“知识盲区”?一场静悄悄的技术革命正在发生 凌晨三点,程序员李然盯着屏幕上的报错信息苦笑。他正在调试的智能客服系统,又一次把"北京今日体感温度"回答成了"建议穿羽绒服"。这不是代码错误,…

【SQL Server】数据探查工具1.0研发可行性方案

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 想抢先解锁数据自由的宝子,速速戳我!评论区蹲一波 “蹲蹲”,揪人唠唠你的超实用需求! 【SQL Server】数据探查工具1.0研发可行性方案…

Qt GUI 库总结

Qt GUI 库总结 Qt GUI 库(QtGui)是 Qt 框架中负责图形用户界面(GUI)开发的核心模块。本文将一步步详解 QtGui,从基础入门到高级应用,帮助你全面掌握其功能。以下内容包括环境配置、基本功能、核心特性及进…

如何在米尔-STM32MP257开发板上部署环境监测系统

本文将介绍基于米尔电子MYD-LD25X开发板(米尔基于STM35MP257开发板)的环境监测系统方案测试。 摘自优秀创作者-lugl4313820 一、前言 环境监测是当前很多场景需要的项目,刚好我正在论坛参与的一个项目:Thingy:91X 蜂窝物联网原型…

网络互连与互联网3

1.SMTP简单邮件传输协议,用于发送电子邮件,默认情况下是明文传输,没有加密机制。 SSL是一种安全协议,对电子邮件进行加密传输。 POP3主要用于接收电子邮件 IMAP用于接收电子邮件 2.采用存储-转发方式处理信号的设备是交换机 …

DICOM通讯(ACSE->DIMSE->Worklist)

DICOM 通讯协议中的 ACSE → DIMSE → Worklist 这条通讯链路。DICOM 通讯栈本身是一个多层的协议结构,就像 OSI 模型一样,逐层封装功能。 一、DICOM 通讯协议栈总体架构 DICOM 通讯使用 TCP/IP 建立连接,其上面封装了多个协议层次&#xf…

优化自旋锁的实现

在《C11实现一个自旋锁》介绍了分别使用TAS和CAS算法实现自旋锁的方案,以及它们的优缺点。TAS算法虽然实现简单,但是因为每次自旋时都要导致一场内存总线流量风暴,对全局系统影响很大,一般都要对它进行优化,以降低对全…

Excel 中让表格内容自适应列宽和行高

Excel 中让表格内容自适应列宽和行高 目录 Excel 中让表格内容自适应列宽和行高自适应列宽自适应行高在Excel中让表格内容自适应列宽和行高,可参考以下操作: 自适应列宽 方法一:手动调整 选中需要调整列宽的列(如果是整个表格,可点击表格左上角行号和列号交叉处的三角形全…

JWT令牌:实现安全会话跟踪与登录认证的利器

摘要:本文深入探讨了JWT令牌在实现会话跟踪和登录认证方面的应用,详细介绍了JWT令牌的概念、组成、生成与校验方法,以及在实际案例中如何通过JWT令牌进行会话跟踪和登录认证的具体实现步骤,为系统的安全认证机制提供了全面且深入的…

Mybtis和Mybatis-Plus区别

MyBatis 和 MyBatis-Plus 是 Java 中常用的持久层框架,MyBatis-Plus 是在 MyBatis 基础上增强的工具包,让开发更便捷、高效。下面是两者主要的区别: ✅ 核心区别总结: 特性MyBatisMyBatis-Plus配置复杂度需要手写大量 XML 或注解…

JavaScript 性能优化实战

一、代码执行效率优化 1. 减少全局变量的使用 全局变量在 JavaScript 中会挂载在全局对象(浏览器环境下是window,Node.js 环境下是global)上,频繁访问全局变量会增加作用域链的查找时间。 // 反例:使用全局变量 var globalVar = example; function someFunction() {con…

学习笔记十六——Rust Monad从头学

🧠 零基础也能懂的 Rust Monad:逐步拆解 三大定律通俗讲解 实战技巧 📣 第一部分:Monad 是什么? Monad 是一种“包值 链操作 保持结构”的代码模式,用来处理带上下文的值,并方便连续处理。 …

PL/SQL登录慢,程序连接Oracle 提示无法连接或无监听

PL/SQL登录慢,程序连接Oracle 提示无法连接或无监听 错误提示:ORA-12541: TNS: 无监听程序 的解决办法, 现象:PL/SQL登录慢,程序连接Oracle 提示无法连接或无监听 监听已经正常开起,但还是PL/SQL登录慢或…