VSCode+ESP-IDF开发ESP32-S3-DevKitC-1(2)第一个工程 LED心跳灯

news/2024/11/20 9:17:51/

VSCode+ESP-IDF开发ESP32-S3-DevKitC-1(2)第一个工程 LED心跳灯

  • 前言
  • 1.新建工程
  • 2.编写控制LED代码
  • 3.LED控制独立成.c和.h文件

前言

实际开发中很多时候我们需要有一个类似心跳灯或运行指示灯的灯以不同的状态闪烁以表示程序的运行状态,所以第一个工程我们就来控制LED灯,控制LED灯我们先从简单的开始,先在main中延时控制然后点亮了之后,再将控制LED的独立成.c与.h文件,以提高后续更复杂的工程开发的便于维护性

1.新建工程

有些教程新上来就需要先配置一堆,这样做很有好处,但是也有缺点,会让基础较差的人一头雾水或感到很复杂,感觉用ESP32开发远没有他习惯用的某些单片机好用,所以这里咱们工程也简单,就先用默认的配置直接开干,先把大门打开,后续再进行配置。
打开VSCode按Ctrl+Shift+P,然后输入New Project,点击【ESP-IDF:New Project】
在这里插入图片描述
在这里插入图片描述
点击右下角【Choose Template】后选取模板创建工程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
工程创建完成
工程创建完成

2.编写控制LED代码

CMakeLists.txt先不用动,其它复杂配置也不用动,待会儿敲完代码直接选串口号和芯片就可以,在main.c中输入如下代码:

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "driver/gpio.h"void app_main(void)
{gpio_reset_pin(2);gpio_set_direction(2, GPIO_MODE_OUTPUT);printf("ESP32S3_LED\n");while(1){gpio_set_level(2, 0);vTaskDelay(500 / portTICK_PERIOD_MS);gpio_set_level(2, 1);vTaskDelay(500 / portTICK_PERIOD_MS);}
}

然后选择COM口,芯片,下载方式,注意点击后是在编译器顶部选择
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后可以分步点击Build Project/Flash Device/Monitor Device,也可以直接点击那个一团火图标的一键按钮Build,Flash And Monitor
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下载完成,手动或自动打开Monitor则可以看到打印的ESP32S3_LED,之后连接到GPIO2的LED等每秒亮灭一次。
IO用到的函数可参照官方的GPIO&RTC GPIO
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.LED控制独立成.c和.h文件

实际项目中我们把代码都写到main中是很不方便维护和移植的,所以我们需要模块化,编写很多的.c和.h文件,另外独立成很多的任务,而不是在一个while循环中把所有任务写完。虽然现在只有一个控制LED的功能,但是我们依旧可以编写独立的.c .h和创建LED 心跳闪烁任务。

未完待续…


http://www.ppmy.cn/news/1548453.html

相关文章

M4 Max在Blender GPU基准测试中落后RTX 4090近30% 但超越RTX 4070和3080 Ti

苹果的新款 M4 Mac 在单核和多核性能方面都取得了令人满意的 Geekbench 跑分结果。 与去年的 M3 芯片相比&#xff0c;从基本型号到 M4 Max&#xff0c;这些芯片都具有更强的计算和图形输出能力&#xff0c;而该公司明年推出备受期待的 M4 Ultra 芯片也只是时间问题。 我们现在…

OpenLayers教程12_WebGL自定义着色器:实现高级渲染效果

在 OpenLayers 中使用 WebGL 自定义着色器实现高级渲染效果 目录 一、引言二、WebGL 自定义着色器的优势三、示例应用&#xff1a;实现动态渲染效果 1. 项目结构2. 主要代码实现3. 运行与效果 四、代码讲解与扩展 1. 动态圆的半径和填充颜色2. 动态透明度与边框效果 五、总结…

SQL 语句基础与实用技巧(DDL DML)

一、语句基础 SQL&#xff08;Structured Query Language&#xff09;是关系型数据库的核心语言&#xff0c;用于定义、操作和查询数据。 SQL 可分为以下几类&#xff1a; DDL&#xff08;数据定义语言&#xff09; 用于定义数据库结构&#xff0c;例如表和索引。常用命令&am…

C语言项⽬实践-贪吃蛇

目录 1.项目要点 2.窗口设置 2.1mode命令 2.2title命令 2.3system函数 2.Win32 API 2.1 COORD 2.2 GetStdHandle 2.3 CONSOLE_CURSOR_INFO 2.4 GetConsoleCursorInfo 2.5 SetConsoleCursorInfo 2.5 SetConsoleCursorPosition 2.7 GetAsyncKeyState 3.贪吃蛇游戏设…

OSRM docker环境启动

命令一把梭 wget https://download.geofabrik.de/asia/china-latest.osm.pbf docker pull osrm/osrm-backend docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/china-latest.osm.pbf docker run -t -v "${PWD}:/data&q…

STM32(hal库)中,__HAL_LINKDMA 函数使用时候,串口的handler DMA_HandleTypedef 为什么前面要加extern

在STM32 HAL库中&#xff0c;__HAL_LINKDMA是一个宏&#xff0c;用于将特定的外设&#xff08;如UART、SPI等&#xff09;的句柄&#xff08;Handle&#xff09;与其对应的DMA&#xff08;直接内存访问&#xff09;句柄链接起来。这样做的目的是让HAL库内部能够自动管理DMA传输…

Kafka-创建topic源码

一、命令创建topic kafka-topics --create --topic quickstart-events --bootstrap-server cdh1:9092 --partitions 2 --replication-factor 2 二、kafka-topics脚本 exec $(dirname $0)/kafka-run-class.sh org.apache.kafka.tools.TopicCommand "$" 脚本中指定了…

深入理解 Vue 3 中的 emit

深入理解 Vue 3 中的 emit 在 Vue 3 中&#xff0c;组件通信是开发中非常重要的一部分&#xff0c;其中通过 emit 实现父子组件通信是最常见的方式之一。emit 的作用是&#xff1a;子组件可以通过触发自定义事件将数据传递给父组件。 在本篇文章中&#xff0c;我们将从以下几…