当前位置: 首页 > news >正文

ESP-IDF学习——1.环境安装与hello-world

ESP-IDF学习——1.环境安装与hello-world

  • 0.前言
  • 一、环境搭建
    • 1.官方IDE工具
    • 2.vscode图形化配置
  • 二、示例工程
  • 三、自定义工程
  • 四、点灯
  • 五、总结


0.前言

  最近在学习freertos,但由于买的书还没到,所以先捣鼓捣鼓ESP-IDF,因为这个比Arduino更接近底层,并且也是基于FreeRTOS实现的,所以先熟悉一些相关基础功能。

一、环境搭建

  ESP-IDF支持windows、linux、MacOS,但总体比较起来,windows下安装似乎更加方便,所以笔者就以windows作为开发环境。Linux和MacOS用户可以参考官方安装教程。
  windows下的安装也可以分为官方IDE和vscode开发环境两种:

1.官方IDE工具

  可以直接进入官方的下载链接进行下载和安装。除此之外,还需要安装python3,安装完成后即可通过桌面installer快捷方式中的命令行进行一系列的配置和编译。

2.vscode图形化配置

  官方ide是基于eclipse界面做的,并且编译和下载还需要执行idf.py命令,比较繁琐,所以笔者更喜欢使用vscode图形化界面进行开发,还可以使用ai代码工具辅助开发,更加方便。
  在vscode中安装Espressif IDF插件:
在这里插入图片描述
然后会跳转到配置界面,如果没有跳转,在vscode的命令行中输入 ESP-IDF: Configure ESP-IDF extension即可进入配置界面,进入express即可配置:
在这里插入图片描述
download server可以选择github(需要网络环境),也可以选择Espressif(乐鑫国内下载地址),如果事先有安装官方ide和python,则version可以选择从本地查找,如果未安装,则可以选择一个release version,然后在下方选择一个安装地址,点击install即可在线安装(建议有良好的网络环境)。
在这里插入图片描述
在这里插入图片描述

二、示例工程

  安装完成后,在vscode命令行中输入ESP-IDF:New Project,即可新建工程:
在这里插入图片描述
在这里插入图片描述
选择如下选项即可加载示例的hello_world工程:
在这里插入图片描述
在这里插入图片描述
编译之前需要在menuconfig中选择芯片flash大小,打开图形化工具,搜索flash设置即可编译和烧录。示例工程的功能为启动后打印一次hello world,然后十秒后重启板子。
在这里插入图片描述
在这里插入图片描述

三、自定义工程

在创建工程时选择sample project即可创建空白项目:
在这里插入图片描述
在这里插入图片描述
将FreeRTOS的头文件包含进来,即可使用相关api。这里有两个地方需要注意,如果使用printf时未添加换行符,则需要使用fflush(stdout)将缓冲区中的数据打印出来。另外vTaskDelay(1000)函数的延时为1000个时钟tick,所以想要延时1s,需要除以当前的时间周期,在menuconfig中查找tick即可配置相关参数。
在这里插入图片描述
程序的结果即为每隔一秒打印一次hello world。
在这里插入图片描述

四、点灯

笔者的板子上有两颗LED灯,就从简单的led闪烁开始。
在这里插入图片描述
main.c

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"uint32_t led_staus = 0;void app_main(void)
{//GPIO初始化gpio_reset_pin(GPIO_NUM_12);gpio_set_direction(GPIO_NUM_12, GPIO_MODE_OUTPUT);gpio_reset_pin(GPIO_NUM_13);gpio_set_direction(GPIO_NUM_13, GPIO_MODE_OUTPUT);for(;;){//设置引脚输出电平gpio_set_level(GPIO_NUM_12, led_staus);gpio_set_level(GPIO_NUM_13, !led_staus);led_staus = !led_staus;vTaskDelay(1000 / portTICK_PERIOD_MS);}
}

编译烧写后即可看见LED闪烁。

五、总结

  ESP-IDF对于熟悉FreeRTOS的人来说应该是比较简单的,除了底层驱动的API需要查询官方手册进行配置,上层的FreeRTOS API基本都可以通用。不过之前如果学习的是STM32CubeIDE中的FreeRTOS CMSIS封装层的话,可能还需要适应一下。笔者目前也刚学习玩FreeRTOS的内核组件,后续在STM32上学习了一些外设开发之后,也会同步学习使用ESP-IDF的驱动方式。

相关文章:

ESP-IDF学习——1.环境安装与hello-world

ESP-IDF学习——1.环境安装与hello-world 0.前言一、环境搭建1.官方IDE工具2.vscode图形化配置 二、示例工程三、自定义工程四、点灯五、总结 0.前言 最近在学习freertos&#xff0c;但由于买的书还没到&#xff0c;所以先捣鼓捣鼓ESP-IDF&#xff0c;因为这个比Arduino更接近底…...

【算法】二分答案

文章目录 相关链接什么时候使用二分答案&#xff1f;题目列表最大化最小化相关题目列表&#x1f4d5;2439. 最小化数组中的最大值解法1——二分答案解法2——分类讨论O(n) 2513. 最小化两个数组中的最大值&#xff08;二分答案lcm容斥原理&#xff09;&#x1f402;好题&#x…...

阿曼市场最全开发攻略,看这一篇就够了

中东是一个充满外贸机遇的市场&#xff0c;已经成为很多外贸人重点开发的市场。 阿曼的海岸南方和东方临阿拉伯海&#xff0c;东北方则抵阿曼湾。阿曼因为扼守着世界上最重要的石油输出通道——波斯湾和阿曼湾之间的霍尔木兹海峡&#xff0c;所以地理位置非常重要&#xff0c;…...

探讨UUID和Secrets:确保唯一性与数据安全的利器

&#x1f600;前言 在现代软件开发中&#xff0c;唯一标识符&#xff08;UUID&#xff09;和机密信息的处理是至关重要的。UUID是用于唯一标识数据记录和对象的128位值&#xff0c;确保了全球范围内的唯一性。同时&#xff0c;Python的secrets模块为处理机密信息提供了强大的随…...

06-Redis缓存高可用集群

上一篇&#xff1a;05-Redis高可用集群之水平扩展 1.集群方案比较 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态&#xff0c;如果master节点异常&#xff0c;则会做主从切换&#xff0c;将某一台slave作为master&#xff0c…...

LCP 18.早餐组合

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCP 18. 早餐组合 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 按序遍历饮料数组&#xff0c;二分查找符合要求 staple 中满足要求的最大值所在位置。最后返回所有*&#xff08;最大位置…...

Tomcat调优【精简版】

Tomcat调优 优化Tomcat内存分配 调整Tomcat启动脚本contalina.sh,设置tomcat启动时分配的内存很可使用的最大内存; CATALINA_OPTS 调整Tomcat线程池 Tomcat默认使用的线程池:ThreadPoolExecutor 可以通过修改server.xml的 Connector 节点下的 maxThreads、minSpareThread…...

通过NDK编译C程序运行在iMX6q开发板上

在之前想要在Ubuntu系统中编译c语言程序为可执行文件并放在装有Android6.0.1系统的imx6q开发板上运行&#xff0c;采用gcc编译器进行编译的时候&#xff0c;虽然可以生成可执行文件但是却出现了错误&#xff0c;最终采用手段仍然无法在板子上运行&#xff0c;但是转换思路后&am…...

【学习笔记】Java 一对一培训(2.1)Java基础语法

【学习笔记】Java 一对一培训&#xff08;2.1&#xff09;Java基础语法 关键词&#xff1a;Java、Spring Boot、Idea、数据库、一对一、培训、教学本文主要内容含Java简介、Java基础语法、Java对象和类、Java基本数据类型、Java变量类型、Java修饰符计划2小时完成&#xff0c;…...

外贸独立站哪家好?推荐的独立站建站平台?

如何选外贸独立站搭建系统&#xff1f;创建贸易网站的工具有哪些&#xff1f; 在如今全球贸易不断蓬勃发展的背景下&#xff0c;外贸独立站成为许多企业拓展国际市场的首选之一。然而&#xff0c;要想在竞争激烈的市场中脱颖而出&#xff0c;选择一家合适的外贸独立站服务提供…...

六、变量与常量

变量与常量 1.变量与常量1.1标识符和关键字1.1.1.标识符1.1.2.关键字 1.2.声明变量1.3.声明常量1.4.变量的有效范围1.4.1.成员变量1.4.2.局部变量 1.5.训练11.6.训练2 —————————————————————————————————————————————————— …...

Fork() 函数:“父” 与 “子” 进程的交互(进程的创建)

阅读导航 前言一、fork函数初识1. 基本概念2. fork函数返回值 二、fork函数的写时拷贝三、总结温馨提示 前言 前面我们讲了C语言的基础知识&#xff0c;也了解了一些数据结构&#xff0c;并且讲了有关C的一些知识&#xff0c;也学习了一些Linux的基本操作&#xff0c;也了解并…...

JupyterNotebook设置Python环境的方法步骤

不多说&#xff0c;看链接。 https://stackoverflow.com/questions/39604271/conda-environments-not-showing-up-in-jupyter-notebook conda activate myenv pip install ipykernel python -m ipykernel install --user --name myenv --display-name "Python (myenv)&q…...

腾讯云阿里云云服务器 Linux 操作系统 BT 宝塔面板快速建站教程

宝塔面板概述 宝塔面板是一款服务器管理软件&#xff0c;支持Windows和Linux系统&#xff0c;可以通过Web端轻松管理服务器&#xff0c;提升运维效率。总体来说&#xff0c;宝塔面板具有操作简单、功能丰富、安全可靠等特点&#xff0c;是一款非常实用的服务器管理软件。 宝塔…...

【Linux】死锁理解

什么是死锁 因为资源调度的方式不合理或者资源的稀缺性&#xff0c;导致进程间的相互等待。 死锁的四个必要条件&#xff1a;互斥条件&#xff0c;请求和保持条件&#xff0c;环路等待条件&#xff0c;不可剥夺条件。 死锁的预防只要破坏死锁产生的四个必要条件。通常采用预…...

基于Java所涉及的人工智能的框架

11 References: [1] Java中人工智能的框架_永远的12的博客-CSDN博客...

【力扣】三角形最小路径和

目录 题目 例子 示例 1&#xff1a; 示例 2&#xff1a; 前言 思路 思想 代码 调用的函数 主函数 所有代码 力扣提交的代码 运行结果 小结 题目 给定一个三角形 triangle &#xff0c;找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结…...

【Linux】指针常量和常量指针

这个是指针常量&#xff0c;不能修改指向【其实就是引用的原型】&#xff1a;可以理解为const是否限制了星号 这个是常量指针&#xff0c;可以改指向&#xff0c;不能改值&#xff1a;...

LCP 22.黑白方格画

​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCP 22. 黑白方格画 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 分别计算当涂0行&#xff0c;1行&#xff0c;2行.......时能否满足要求&#xff0c;若能&#xff…...

Java并发编程第8讲——ThreadLocal详解

ThreadLocal无论是在项目开发还是面试中都会经常碰到&#xff0c;它的重要性可见一斑&#xff0c;本篇文章就从ThreadLocal的使用、实现原理、核心方法的源码、内存泄漏问题等展开介绍一下。 一、什么是ThreadLocal ThreadLocal是java.lang下面的一个类&#xff0c;在JDK 1.2版…...

NPU vs GPU:为什么你的AI项目需要专用神经网络处理器?

NPU vs GPU&#xff1a;为什么你的AI项目需要专用神经网络处理器&#xff1f; 当你在深夜调试一个实时人脸识别模型时&#xff0c;GPU风扇的轰鸣声是否让你担心电费账单&#xff1f;当部署在边缘设备的图像分类服务因为响应延迟被客户投诉时&#xff0c;是否考虑过硬件选型可能…...

2026降AI率工具红黑榜:降AI率网站怎么选?看完少走弯路

千笔AI、ThouPen、豆包位列红榜&#xff0c;精准适配国内高校AI率检测规范&#xff1b;黑榜需避开低质免费工具、无正规检测对接平台及改写痕迹明显的工具&#xff1b;选择时应优先匹配三维模型&#xff1a;降AI效果-学术合规性-使用成本。 一、红榜&#xff1a;10 款高分论文降…...

RWKV7-1.5B-g1a轻量对话模型应用:微信公众号自动回复+知识库问答搭建

RWKV7-1.5B-g1a轻量对话模型应用&#xff1a;微信公众号自动回复知识库问答搭建 1. 模型简介与特点 rwkv7-1.5B-g1a 是基于 RWKV-7 架构的多语言文本生成模型&#xff0c;特别适合中文轻量对话场景。相比传统大模型&#xff0c;它具有以下优势&#xff1a; 资源占用低&#…...

BGE嵌入模型实战手册:面向开发者的检索增强解决方案

BGE嵌入模型实战手册&#xff1a;面向开发者的检索增强解决方案 【免费下载链接】FlagEmbedding Dense Retrieval and Retrieval-augmented LLMs 项目地址: https://gitcode.com/GitHub_Trending/fl/FlagEmbedding 在构建智能问答系统时&#xff0c;你是否曾遇到这些挑战…...

Mermaid:文本驱动的可视化引擎深度指南

Mermaid&#xff1a;文本驱动的可视化引擎深度指南 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器&#xff0c;支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图的开发者。 …...

ESP WiFi中继器终极配置指南:从零开始打造智能无线网络扩展器

ESP WiFi中继器终极配置指南&#xff1a;从零开始打造智能无线网络扩展器 【免费下载链接】esp_wifi_repeater A full functional WiFi Repeater (correctly: a WiFi NAT Router) 项目地址: https://gitcode.com/gh_mirrors/es/esp_wifi_repeater 想要轻松扩展WiFi覆盖范…...

Phi-4-Reasoning-Vision效果展示:低资源语言(如日/韩/西)图文推理能力

Phi-4-Reasoning-Vision效果展示&#xff1a;低资源语言&#xff08;如日/韩/西&#xff09;图文推理能力 1. 多模态推理工具概览 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具。该工具专为双卡RTX 4090环境优化&#x…...

FLUX.1-dev LoRA微调指南:基于像素幻梦输出数据集训练专属风格

FLUX.1-dev LoRA微调指南&#xff1a;基于像素幻梦输出数据集训练专属风格 1. 前言&#xff1a;为什么需要LoRA微调 在像素艺术创作领域&#xff0c;每个艺术家都渴望拥有独特的视觉风格。FLUX.1-dev作为当前最先进的扩散模型&#xff0c;配合像素幻梦(Pixel Dream Workshop)…...

MAA明日方舟自动化助手:5分钟快速上手指南

MAA明日方舟自动化助手&#xff1a;5分钟快速上手指南 【免费下载链接】MaaAssistantArknights 一款明日方舟游戏小助手 项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights MAA&#xff08;MaaAssistantArknights&#xff09;是一款专为《明日方…...

ExcelJS 实战手册:从零构建企业级Excel报表系统

1. ExcelJS入门&#xff1a;为什么选择它构建企业报表&#xff1f; 第一次接触ExcelJS时&#xff0c;我正为一个电商项目头疼——每天要生成近万条订单数据的报表。尝试过直接输出CSV&#xff0c;但客户坚持要带格式的Excel文件&#xff1b;用PHPExcel处理又遇到内存溢出。直到…...