当前位置: 首页 > 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版…...

深度测试在2D渲染中的性能优化实践

1. 深度测试在2D渲染中的创新应用在移动设备上&#xff0c;2D应用和游戏的渲染性能优化一直是个棘手的问题。传统2D渲染采用简单的后向前&#xff08;back-to-front&#xff09;绘制顺序来处理透明混合&#xff0c;这种方法虽然直观&#xff0c;但存在严重的过度绘制&#xff0…...

突破传统命令行限制:PortProxyGUI如何重塑Windows网络配置体验

突破传统命令行限制&#xff1a;PortProxyGUI如何重塑Windows网络配置体验 【免费下载链接】PortProxyGUI A manager of netsh interface portproxy which is to evaluate TCP/IP port redirect on windows. 项目地址: https://gitcode.com/gh_mirrors/po/PortProxyGUI …...

企业级ai应用如何通过taotoken实现稳定低成本的多模型调用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业级AI应用如何通过Taotoken实现稳定低成本的多模型调用 在构建面向生产环境的企业级AI应用时&#xff0c;开发团队常常面临两个…...

观察Taotoken在多模型并发请求下的稳定性与响应表现

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观察Taotoken在多模型并发请求下的稳定性与响应表现 在实际业务开发中&#xff0c;我们常常需要同时调用多个不同的大模型来处理不…...

VS Code 高效开发:从 launch.json 变量替换到 task.json 自动化构建

1. 从零开始配置 VS Code 调试环境 第一次打开 VS Code 的调试面板时&#xff0c;很多开发者都会感到无从下手。其实配置调试环境并不复杂&#xff0c;关键是要理解 launch.json 文件的作用。这个文件就像是调试器的"说明书"&#xff0c;告诉 VS Code 如何启动和连接…...

别再纠结了!手把手教你根据项目需求选对Intel Realsense型号(D455/D435i/D415/T265实战对比)

深度视觉硬件选型指南&#xff1a;Intel RealSense全系型号实战解析 在计算机视觉和机器人领域&#xff0c;选择合适的3D感知硬件往往决定了项目成败。面对Intel RealSense系列中D455、D435i、D415和T265等不同型号&#xff0c;许多开发者常陷入"参数对比陷阱"——过…...

在Python项目中实现通过Taotoken轮询调用多个大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Python项目中实现通过Taotoken轮询调用多个大模型 基础教程类&#xff0c;面向中高级开发者。当你在构建一个需要灵活调用不同大…...

对比按需调用与Token Plan套餐的实际支出感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比按需调用与Token Plan套餐的实际支出感受 对于个人开发者或小型团队而言&#xff0c;在大模型API的日常使用中&#xff0c;成本…...

TrendForge 每日精选:10 个热门开源项目,今日总获星 11321 颗!

TrendForge 每日精选热门开源项目发布 TrendForge 致力于追踪全球开源项目动态&#xff0c;每日为开发者精选最具价值的 GitHub 项目。今日共收录 10 个热门项目&#xff0c;项目描述已自动翻译为智能中文翻译版&#xff0c;便于理解。 今日最热项目 Top 10 mattpocock/skills&…...

网络虚拟化如何应对100G性能挑战:从SDN/NFV到DPDK与智能网卡的演进

1. 网络虚拟化与100G浪潮&#xff1a;一场正在发生的架构革命如果你在2015年前后从事网络或云计算相关的工作&#xff0c;大概会对一个词印象深刻&#xff1a;100G。当时&#xff0c;行业媒体和厂商都在热烈讨论一个预测——到2018年&#xff0c;100G将成为网络设备&#xff0c…...