update: 修复细节

This commit is contained in:
DuRuofu
2025-02-08 21:25:34 +08:00
parent 0fcc6b5113
commit 621725c132
35 changed files with 418 additions and 326 deletions
+270 -263
View File
File diff suppressed because it is too large Load Diff
@@ -1,4 +1,4 @@
# 常见问题与解决
## 1. 头文件无法跳转,没有代码提示
**问题**:
@@ -1,5 +1,8 @@
# ESP32介绍
# 一、ESP32是什么?
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV1u861YHEso
## 一、ESP32是什么?
ESP32是一款由乐鑫(Espressif)公司研发的高性能、低功耗Wi-Fi和蓝牙双模芯片。它专为物联网(IoT)设计,集成了丰富的功能模块和硬件接口,是目前最流行的物联网嵌入式开发平台之一。
@@ -30,7 +33,7 @@ ESP32指的是ESP32裸芯片,但我们常说的“ESP32”一词通常指ESP32
---
# 二、为什么要学习ESP32?
## 二、为什么要学习ESP32?
学习ESP32不仅是掌握一项技能,更是打开物联网开发大门的关键。以下是学习ESP32的几大优势:
@@ -49,13 +52,13 @@ ESP32指的是ESP32裸芯片,但我们常说的“ESP32”一词通常指ESP32
---
# 三、怎么学习ESP32?
## 三、怎么学习ESP32?
## 3.1 选择开发环境
### 3.1 选择开发环境
ESP32开发方式主要分为以下三种,本教程推荐使用第一种ESP-IDF进行开发,下面是几种开发框架的对比分析。
### 3.1.1 ESP-IDF
#### 3.1.1 ESP-IDF
![](attachments/1.png)
@@ -66,7 +69,7 @@ ESP-IDF(Espressif IoT Development Framework)是乐鑫官方提供的开发
- 内置 FreeRTOS,适合实时多任务开发。
**适用人群**:有嵌入式开发经验或需要深度优化性能的开发者。
推荐使用:官方文档 + VS Code 插件 + Linux/Windows 开发环境。
### 3.1.2 ESP-Arduino
#### 3.1.2 ESP-Arduino
![](attachments/2.png)
@@ -78,7 +81,7 @@ ESP-IDF(Espressif IoT Development Framework)是乐鑫官方提供的开发
**适用人群**:嵌入式初学者、爱好者以及需要快速开发和验证功能的开发者。
**推荐使用**:Arduino IDE 或 PlatformIO 。
### 3.1.3 Micro Python
#### 3.1.3 Micro Python
![](attachments/3.png)
@@ -90,9 +93,9 @@ ESP-IDF(Espressif IoT Development Framework)是乐鑫官方提供的开发
**适用人群**:编程初学者、Python 开发者,或对嵌入式感兴趣但不熟悉 C/C++ 的用户。
**推荐使用**:Thonny IDE ,结合官方 MicroPython 文档。
## 3.2 学习方法
### 3.2 学习方法
### 心法:
#### 心法:
1. 迅速掌握基本开发知识
初学阶段不要纠结于细枝末节,重点是快速上手,掌握 ESP32 开发的基本流程和核心概念。
@@ -103,12 +106,12 @@ ESP-IDF(Espressif IoT Development Framework)是乐鑫官方提供的开发
4. 以项目驱动学习(费曼学习法)
学习的最佳方式是通过动手做项目,解决实际问题的过程中不仅巩固知识,还能找到自己的薄弱环节并加以改进。
### 途径:
#### 途径:
![](attachments/4.png)
首先选择一个实际项目作为切入点,例如让 ESP32 控制一个 LED 并通过 Wi-Fi 连接到本地网络进行远程控制。在项目中遇到具体功能需求时,针对性地学习相关模块,比如 GPIO 操作、Wi-Fi 配置等,MQTT协议。通过搜索引擎(如Bing)或视频教程快速理解基础概念,在掌握基础概念后,去阅读官方文档,了解ESP32这个模块如何使用(看不懂再去看视频),以官方历程代码为参考,结合项目需求进行实验和优化。随着学习的深入,可以拓展到更复杂的功能模块,比如蓝牙通信或低功耗模式,最终通过一个个项目的积累,系统掌握 ESP32 的开发技能。这种以项目驱动为核心、逐步深入的学习方式,可以帮助快速上手,同时在实践中巩固知识。
## 3.3 学习资源推荐
### 3.3 学习资源推荐
重要的事情说三遍:
@@ -118,10 +121,10 @@ ESP-IDF(Espressif IoT Development Framework)是乐鑫官方提供的开发
乐鑫的官方文档和官方历程一定是最好的学习ESP32的素材和指南。
其次,我在这里推荐一些相关的ESP32视频教程UP主,看不懂文档时可以参考他们的视频:
最后,我在这里推荐一些相关的ESP32视频教程UP主,看不懂文档时可以参考他们的视频:
- **Michael_ee**:https://space.bilibili.com/505630520/fans/follow?tagid=529812
- 孤独的二进制:https://space.bilibili.com/1375767826
- 第九个下弦月:https://space.bilibili.com/34165842?spm_id_from=333.999.0.0
- 宸芯IOT:https://space.bilibili.com/1458941333?spm_id_from=333.337.search-card.all.click
- ESP_Friends:https://space.bilibili.com/3493296718482287?spm_id_from=333.337.search-card.all.click
- **Michael_ee**: https://space.bilibili.com/1338335828
- 孤独的二进制: https://space.bilibili.com/1375767826
- 第九个下弦月: https://space.bilibili.com/34165842
- 宸芯IOT: https://space.bilibili.com/1458941333
- ESP_Friends: https://space.bilibili.com/3493296718482287
@@ -1,6 +1,12 @@
# 一、Windows系统
# ESP32开发环境搭建
## 1.1 使用VS Code插件直接安装
> [!NOTE]
> 对应视频教程-1:https://www.bilibili.com/video/BV14o62YQEBC <br/>
> 对应视频教程-2:https://www.bilibili.com/video/BV1vLrKYHExy <br/>
> 对应视频教程-3:https://www.bilibili.com/video/BV1s2rGYsE4V <br/>
## 一、Windows系统
### 1.1 使用VS Code插件直接安装
在Windows系统下使用VS Code插件直接安装ESP-IDF可以参考官方文档:[Install ESP-IDF and Tools](https://docs.espressif.com/projects/vscode-esp-idf-extension/zh_CN/latest/installation.html),下面介绍安装过程:
@@ -65,7 +71,7 @@ VS Code会自动打开项目目录,如下:
至于进一步烧录代码至开发板,将在下一节介绍。
## 1.2 手动安装
### 1.2 手动安装
Windows系统下手动安装可以参考官方文档:[Windows 平台工具链的标准设置](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/get-started/windows-setup.html#),下面简单介绍安装过程:
@@ -136,29 +142,29 @@ Windows系统下手动安装可以参考官方文档:[Windows 平台工具链
![](attachments/20241230204358.png)
# 二、Linux系统
## 二、Linux系统
## 2.1 使用VS Code插件直接安装
### 2.1 使用VS Code插件直接安装
这种安装方法和1.1介绍的Windows下使用VS Code插件直接安装没有太大区别,参考1.1部分和官方文档中针对Linux系统的提示即可,这里就不展开描述了。
建议直接参考官方文档:[Install ESP-IDF and Tools](https://docs.espressif.com/projects/vscode-esp-idf-extension/zh_CN/latest/installation.html)进行安装,但相比于在Linux下使用VS code安装,笔者更建议直接手动安装。
## 2.2 手动安装
### 2.2 手动安装
Linux系统下使用ESP-IDF更推荐手动安装,因为Linux系统下我们使用更多的是命令行,VS Code插件提供的可视化操作可有可无。
这部分同样可以优先参考官方文档:[Linux 和 macOS 平台工具链的标准设置](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/get-started/linux-macos-setup.html),下面就安装过程进行简单说明:
### 2.2.1 准备linux的电脑或者虚拟机
#### 2.2.1 准备linux的电脑或者虚拟机
教程使用Ubuntu22.04的虚拟机环境,以安装v5.1.2为例,**注意本教程后续使用v5.2.3进行教学**,读者下载时建议下载新的`v5.2.3`版本。
![](attachments/20240125114613.png)
### 2.2.2 下载ESP-IDF包环境
#### 2.2.2 下载ESP-IDF包环境
下载ESP-IDF包环境,这里有两种下载方式:直接使用`git clone`命令下载,或者手动前往ESP-IDF仓库下载
@@ -187,7 +193,7 @@ git clone -b v5.1.2 --recursive https://github.com/espressif/esp-idf.git
> PS:这里也可以安装多个版本,在这个目录中,不会冲突
### 2.2.3 安装依赖项
#### 2.2.3 安装依赖项
编译 ESP-IDF 需要以下软件包。请根据使用的 Linux 发行版本,选择合适的安装命令。
@@ -206,7 +212,7 @@ sudo yum -y update && sudo yum install git wget flex bison gperf python3 python3
sudo pacman -S --needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
```
### 2.2.3 安装 ESP-IDF 使用的各种工具
#### 2.2.3 安装 ESP-IDF 使用的各种工具
这里使用全部安装:
@@ -242,7 +248,7 @@ trusted-host=mirrors.aliyun.com
> 如果还失败就去修改:~/.config/pip/pip.conf 这个配置文件
### 2.2.4 配置快捷指令
#### 2.2.4 配置快捷指令
在终端执行`. $HOME/esp/esp-idf/export.sh` 这个脚本,就可以在当前终端使用esp-idf工具
@@ -265,7 +271,7 @@ nano ~/.bashrc
```sh
source ~/.bashrc
```
### 2.2.5 测试编译
#### 2.2.5 测试编译
打开历程目录下的hello_world程序:
@@ -286,7 +292,7 @@ alias idf53='. $HOME/esp/v532/esp-idf/export.sh'
最后在这里分享本节安装使用的相关软件和安装好IDF的Linux虚拟机:[软件资源](https://www.alipan.com/s/PRCdvqnzCWL)
# 三、(进阶)Windows下使用ssh调用Linux系统下的开发环境
## 三、(进阶)Windows下使用ssh调用Linux系统下的开发环境
SSH (Secure Shell) 是一种网络协议,用于在不安全的网络上安全地访问远程设备和服务器。它提供了强大的加密功能,可以保护用户和服务器之间的通信免受窃听、篡改和中间人攻击。
@@ -305,7 +311,7 @@ ssh user@host
在Windows下使用VS Code通过SSH调用Linux系统的开发环境,可以在有效提升编译速度的同时,进一步提升开发体验,下面是详细的步骤:
## 3.1 配置SSH连接,确保可以连接
### 3.1 配置SSH连接,确保可以连接
1. 确保Linux服务器已启动,并记录其IP地址或主机名,在Linux使用`ifconfig`命令查询虚拟机IP(也可以使用`ip a`命令),找不到命令 `ifconfig`,但可以通过以下命令安装它:
@@ -341,27 +347,27 @@ sudo ufw allow ssh
![](attachments/20250105213305.png)
这一步可能需要在Windows上安装OpenSSH客户端(默认Windows 10及以上版本自带)
## 3.2 安装Remote - SSH插件
### 3.2 安装Remote - SSH插件
打开VS Code,点击左侧的扩展市场图标,搜索`Remote - SSH`插件并安装。
![](attachments/20250104234434.png)
## 3.3 通过Remote - SSH连接到Linux服务器
### 3.3 通过Remote - SSH连接到Linux服务器
1. 打开VS Code,按下`Ctrl+Shift+P`,输入`Remote-SSH: Add New SSH Host`并选择该项。
2. 输入SSH连接命令,例如:
ssh 用户名@服务器IP地址
然后选择一个保存SSH配置的路径(默认路径是`~/.ssh/config`)。
## 3.4 在VS Code中打开ESP-IDF工程
### 3.4 在VS Code中打开ESP-IDF工程
1. 使用VS Code的`File -> Open Folder`功能,选择Linux服务器中的ESP-IDF项目目录:
例如: `~/esp/esp-idf/examples/get-started/hello_world`
2. 打开项目后,VS Code会加载远程的文件结构。
## 3.5 配置密钥,实现免密连接
### 3.5 配置密钥,实现免密连接
1. 在Windows下使用`ssh-keygen`生成密钥,按提示操作:
默认保存路径是 ~/.ssh/id_rsa(直接按回车即可)。可为密钥设置密码,如果不想设置,直接回车跳过。生成完成后,会在默认路径下生成:
@@ -388,7 +394,7 @@ nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
## 3.6 编译和调试项目
### 3.6 编译和调试项目
1. 在终端窗口中,运行以下命令以编译项目:
` idf.py build`
@@ -1,6 +1,10 @@
本节介绍ESP32开发的基本流程,介绍代码编译,烧录,以及查看串口监视器等常用命令,引导大家学会使用idf.py工具。此部分也可以参考官方文档:[IDF 前端工具 - idf.py](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.2.3/esp32/api-guides/tools/idf-py.html)
# ESP.py的基本使用
# 一、常用idf.py命令介绍
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV1VLrSY3E15
本节介绍ESP32开发的基本流程,介绍代码编译,烧录,以及查看串口监视器等常用命令,引导大家学会使用idf.py工具。此部分也可以参考官方文档:[IDF 前端工具 - idf.py](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.2.3/esp32/api-guides/tools/idf-py.html)
## 一、常用idf.py命令介绍
| 功能 | 命令 | 备注 |
| -------- | ------------------------------------------------------- | ------------------------------- |
@@ -33,9 +37,9 @@
点击小扳手图标构建项目,与在命令行对应目录下使用`idf.py build`命令,具有一模一样的效果,ESP-IDF插件只是为我们提供了一个可视化界面。
当我们使用熟练后,使用可视化界面与直接使用命令没有什么区别,考虑到本教程不仅仅针对使用VS Code+ESP-IDF插件环境的学习者,**所以后续的教程中可能更多的以使用命令行命令为主,望读者周知**,这只是个人习惯,您在开发过程中可以选用您喜欢的操作方式,本质上没有区别。
# 二、尝试编译运行HelloWorld
## 二、尝试编译运行HelloWorld
## 2.1 准备示例代码
### 2.1 准备示例代码
接下来我们尝试编译并烧录一个HelloWorld示例工程,IDF-IDF提供了很多例程,它的例程文件位于 IDF 文件夹下的examples 中。
@@ -53,7 +57,7 @@
我们可以在main文件夹里看到`hello_world.c`这就是`hello_world`工程的代码,关于工程结构,每个文件都是干什么的我们会在下节详细展开介绍,本节我们只讨论如何编译,烧录,和查看代码运行效果。
## 2.2 设置目标芯片
### 2.2 设置目标芯片
首先我们要确认芯片型号选择正确:
@@ -71,7 +75,7 @@
![](attachments/20250102180455.png)
## 2.3 编译代码
### 2.3 编译代码
点击构建代码按钮,进行代码编译(也可以打开ESP-IDF终端,使用`idf.py bulid`命令)
@@ -85,7 +89,7 @@
![](attachments/20250102181750.png)
## 2.4 烧录代码
### 2.4 烧录代码
烧录代码前先将开发板连接到电脑,确认开发板的串口号:
@@ -114,7 +118,7 @@ Linux下可以可以使用`ls /dev/ttyUSB*`命令查看可用串口。
>PS:如果这一步失败,且显示`A fatal error occurred: Timed out waiting for packet header`, 意味着esp32模组(芯片)没有正常进入下载模式,可能是开发板上没有自动下载的电路,需要按住开发板上的BOOT按钮,再按一下复位按钮(一般写Reset或者EN),让ESP32进入下载模式,再点击烧录代码即可。
## 2.4 查看代码运行效果
### 2.4 查看代码运行效果
点击监控设备按钮即可打开串口监视器,查看芯片串口输出(也可以使用其他串口调试工具),但建议使用ESP-IDF自带的这个。
@@ -135,7 +139,7 @@ Linux下可以可以使用`ls /dev/ttyUSB*`命令查看可用串口。
至此我们就借助 Hello world工程,掌握了最基本的ESP32开发流程。第一章认识ESP32到此结束,下一章将进一步熟悉ESP-IDF的架构与开发流程,掌握工程结构和常用开发工具及调试方法,建立高效开发基础。
# 三、其他高级命令
## 三、其他高级命令
下面列出一些其他高级命令:
@@ -1,10 +1,16 @@
# ESP32项目工程结构
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV1CfrzYcEkK <br/>
> 对应示例代码:[sample_project](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/01/sample_project)
## 介绍
ESP-IDF 的项目工程与 Keil 的传统工程模式有显著不同。Keil 工程通常依赖于特定的项目文件格式(如 .uvprojx 或 .uvoptx),这些文件记录了项目的结构、配置和依赖,且需要通过 Keil 软件进行管理和编译。而 ESP-IDF 则采用更灵活的构建方式,ESP-IDF 的项目只是一个特定的文件夹,其中包含了构建可执行应用程序所需的全部文件和配置,以及其他支持型文件,例如分区表、数据/文件系统分区和引导程序。这些文件描述了项目的源码路径、依赖关系和编译选项,而不是依赖于 IDE 专属的配置格式。这样可以方便地在不同的开发环境中切换。
关于ESP-IDF工程结构可以参考官方文档:[示例项目](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.3.2/esp32/api-guides/build-system.html#example-project-structure)
这部分没有什么新的东西,只是需要明白ESP-IDF所规定的项目框架,下面的内容都提炼自官方文档,大家也可以直接前往官方文档查看。
### 项目目录
## 项目目录
esp-idf的标准目录如下所示:
@@ -88,6 +94,6 @@ idf_component_register(SRCS "my_component.c"
- `REQUIRES` 声明组件的public依赖,可供其他依赖者访问
- `PRIV_REQUIRES`声明private依赖,只能被当前组件访问。
# 参考链接
## 参考链接
1. https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/build-system.html
@@ -1,7 +1,13 @@
# ESP32项目配置
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV15xwbeiEnD <br>
> 对应示例代码:[blink_menuconfig](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/02)
关于项目配置部分的文档,可以参考:[ API 参考 » 项目配置](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.3.2/esp32/api-reference/kconfig.html)
首先我们先借助一个具体的例子来解释Menuconfig命令的使用和Kconfig文件的作用。
# 一、Menuconfig的使用
## 一、Menuconfig的使用
打开示例工程:`esp-idf/examples/get-started/blink`
@@ -63,7 +69,7 @@
只是形式与命令行略有不同,但配置项内容都是一样的,特在此补充说明。
# 二、组件配置文件
## 二、组件配置文件
那么我们刚才在`menuconfig`菜单里看到的关于LED配置的内容是那来的呢,通过官方文档,我们可以知道它来源于main组件下的 `Kconfig.projbuild` 文件。
@@ -164,13 +170,13 @@ endmenu
同时,ESP-IDF默认组件也使用了大量的`Kconfig`配置,通过这些配置,我们可以修改ESP-IDF的很多默认配置项,比如系统分区表、FreeRTOS 配置(任务调度器的行为、栈大小、系统 tick 时间)、驱动程序设置、日志输出级别等。
# 三、为什么要用组件配置(Menuconfig)
## 三、为什么要用组件配置(Menuconfig)
1. 组件配置可以将相关配置常量移出代码,增强配置的可复用度。
2. 组件配置生成的宏定义,配合C语言的预处理语句,可以针对不同的配置改变代码解结构。
3. 组件配置变量也可以被CMake访问,可以通过手写逻辑实现根据配置执行不同的构建方案(如某个源文件要不要添加到构建系统)。参考:[预设的组件变量](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.3.2/esp32/api-guides/build-system.html#preset-component-variables)
# 四、创建组件配置
## 四、创建组件配置
下面我们试着自己写一个组件配置,体验一下全流程,首先复制`blink`历程到自己的目录,重命名为 `blink_menuconfig`
@@ -240,7 +246,7 @@ endmenu
最后我们只需要在对应的c文件里引用`sdkconfig.h`这个头文件,我们就可以使用我们自定义的这些宏,还需要说明的一点是这些宏会被默认加上`CONFIG_`前缀,所以我们定义的`BLINK_GPIO`在实际使用时应该写作:`CONFIG_BLINK_GPIO`
# 五、组件配置相关文件
## 五、组件配置相关文件
最后总结一下,并附上一些细碎的知识点,不求大家记住,只要有个印象即可,具体要用到了再回来查。
@@ -272,7 +278,7 @@ endmenu
最后再讲一下`Kconfig` 和 `Kconfig.projbuild` 文件有什么区别,可以参考官方文档:[KConfig.projbuild](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.3.2/esp32/api-guides/build-system.html?highlight=kconfig%20projbuild#kconfig-projbuild)
# 参考链接
## 参考链接
1. https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/kconfig.html
2. https://docs.espressif.com/projects/esp-idf/zh_CN/v5.3.2/esp32/api-guides/build-system.html#custom-sdkconfig-defaults
@@ -1,3 +1,9 @@
# ESP32自定义组件
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV182ftYHEox <br>
> 对应示例代码:[blink_component](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/03/blink_component)
关于ESP-IDF自定义组件部分的文档,可以参考:[API 指南 » 构建系统](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.3.2/esp32/api-guides/build-system.html?highlight=kconfig%20projbuild#component-configuration)
## 一 、自定义组件介绍:
@@ -179,7 +185,7 @@ void app_main(void)
这样就完成了代码的模块化,关于组件依赖,依赖嵌套还有一些值得注意的地方,不过目前入门阶段不必深究,后续学习过程中会娓娓道来。
# 参考链接
## 参考链接
1. https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/build-system.html
2. https://developer.espressif.com/blog/2024/12/how-to-create-an-esp-idf-component/
@@ -1,3 +1,9 @@
# ESP32组件管理器
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV1etfHYgE6M <br>
> 对应示例代码:[button_blink](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/04/button_blink)
关于ESP-IDF组件管理器的文档,可以参考:[ API 指南 » 工具 » IDF 组件管理器](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-guides/tools/idf-component-manager.html)
## 一、啥是组件管理器
@@ -98,7 +104,6 @@ if(NULL == gpio_btn) {
Button 组件支持为多个事件注册回调函数,每个事件都可以注册一个回调函数,当事件发生时,回调函数将会被调用。
``` c
static void button_single_click_cb(void *arg,void *usr_data)
{
ESP_LOGI(TAG, "BUTTON_SINGLE_CLICK");
@@ -177,7 +182,7 @@ void app_main(void)
实现的效果为:单击开发板上的按键,可以控制LED翻转。
以上就是ESP32组件管理器及第三方组件的使用。
# 参考链接
## 参考链接
1. https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/tools/idf-component-manager.html
2. https://components.espressif.com/components/espressif/button/versions/3.5.0?language=en
@@ -1,4 +1,10 @@
# FreeRTOS介绍
> [!NOTE]
> 对应视频教程:暂无 <br>
> 对应示例代码:暂无
FreeRTOS 是一个开源的 RTOS(实时操作系统)内核,它以组件的形式集成到 ESP-IDF 中。因此,所有的 ESP-IDF 应用程序及多种 ESP-IDF 组件都基于 FreeRTOS 编写。
## 1.1 RTOS是什么?
@@ -1,4 +1,10 @@
# FreeRTOS多任务管理
> [!NOTE]
> 对应视频教程:暂无 <br>
> 对应示例代码:暂无
注意:与原生 FreeRTOS 不同,在 ESP-IDF 中使用 FreeRTOS 的用户 \永远不应调用 `vTaskStartScheduler()` 和 `vTaskEndScheduler()`。相反,ESP-IDF 会自动启动 FreeRTOS。用户必须定义一个 `void app_main(void)` 函数作为用户应用程序的入口点,并在 ESP-IDF 启动时被自动调用。
通常,用户会从 `app_main` 中启动应用程序的其他任务。`app_main` 函数可以在任何时候返回(应用终止前)。`app_main` 函数由 main 任务调用。
@@ -1,3 +1,9 @@
# FreeRTOS任务看门狗
> [!NOTE]
> 对应视频教程:暂无 <br>
> 对应示例代码:暂无
## 任务看门狗定时器 (TWDT)
https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-reference/system/wdts.html
@@ -0,0 +1,5 @@
# FreeRTOS软件定时器教程
> [!NOTE]
> 对应视频教程:暂无 <br>
> 对应示例代码:暂无
@@ -1,5 +1,9 @@
# ESP32外设-GPIO入门
# ESP32外设-GPIO
> [!NOTE]
> 对应视频教程:暂无 <br>
> 对应示例代码:暂无
## 一、GPIO介绍
@@ -1,6 +1,10 @@
# ESP32外设-UART入门
# ESP32外设-UART
> [!NOTE]
> 对应视频教程:暂无 <br>
> 对应示例代码:暂无
## 一、UART介绍
@@ -2,6 +2,11 @@
# ESP32外设-硬件定时器入门
> [!NOTE]
> 对应视频教程:暂无 <br>
> 对应示例代码:暂无
> 若不必使用硬件定时器,则建议使用软件定时器:[ESP 定时器](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/system/esp_timer.html)
## 一、介绍:
@@ -2,6 +2,11 @@
# ESP32外设-ADC入门
> [!NOTE]
> 对应视频教程:暂无 <br>
> 对应示例代码:暂无
>本文档主要转载自[Augtons正(单片机)](https://blog.csdn.net/m0_50064262 "Augtons正(单片机)")的ESP32系列教程(关于ADC部分的梳理甚至比官方教程都清晰)。
## 一、介绍
@@ -1,8 +1,8 @@
# ESP32外设-DAC
<div STYLE="page-break-after: always;"></div>
# ESP32外设-DAC入门
> [!NOTE]
> 对应视频教程:暂无 <br>
> 对应示例代码:暂无
## 一、介绍
@@ -1,6 +1,9 @@
# ESP32外设-LEDPWM入门
> [!NOTE]
> 对应视频教程:暂无 <br>
> 对应示例代码:暂无
## 一、介绍:
LED 控制器 (LEDC) 主要用于控制 LED,也可产生 PWM 信号用于其他设备的控制。该控制器有 8 路通道,可以产生独立的波形,驱动 RGB LED 等设备。
@@ -0,0 +1,3 @@
# 电机控制脉宽调制器 (MCPWM)
MCPWM 外设是一个多功能 PWM 生成器,集成多个子模块,在电力电子应用(如电机控制、数字电源等)中至关重要。