- 博客(48)
- 收藏
- 关注
原创 ESP-IDF VScode 项目构建/增加组件 新手友好!!!
1.新建文件夹,同时在该文件夹内新建.c和.h文件如图所示,在components中新建ADC_User.c、ADC_User.h、CMakeLists.txt文件。当然这里你也可以不在components文件夹内新建文件,下面会说没有在components文件夹内新建文件构建项目的方法。2.撰写新建文件夹下的CMakeLists.txt文件,如图所示。3.修改根目录下的CMakeLists.txt(添加编译路径)(一)对应第1点中没有在components文件夹内新建文件的添加编译路径的方法。
2024-11-18 09:38:56
1491
2
原创 ESP32 NVS 非易失性存储
非易失性存储 (NVS) 库主要用于在 flash 中存储的数据。本章涉及核心知识点:NVS掉电不丢失存储系统。ESP-IDF版本:V5.1.2。
2024-02-05 23:33:18
934
原创 ESP32 定时器和消息队列
本章涉及知识点:ESP32通用定时器、日志输出,FreeRTOS消息队列。实现功能:使用ESP32通用定时器实现每1S打印输出日志以及每1Min打印输出日志。ESP-IDF版本:V5.1.2。
2024-01-28 13:00:48
496
原创 Git版本管理
版本控制是为了在开发过程中帮助我们管理文件、工程等,可以方便查看更改的历史记录,备份和恢复之前的版本。常见的版本控制器有:GIT现在影响力最大的是Git和SVN。版本控制又可以分为本地版本控制(就是我们手动的控制文件版本)、集中版本控制(SVN,所有版本都保存在服务起上,协同开发者从服务器上同步更新或上传自己的文件,但服务器崩溃就无法获取文件)、分布式版本控制(所有版本信息仓库全部同步到本地的每个用,在本地可以查看所有版本历史,每个人都能够看到工程的所有代码)
2024-01-19 15:12:25
1430
转载 3、stm32F103入门学习--程序烧录的几种方法
由于之前买过原子开发板,所以首先采用st-link下载,有需要的可以去网上单独购买(50元多),不过先看完整个教程看哪种方法适合你。该方法需要接两处,一处是st-link排针口,因为不能提供电源,所以另一处是电源,如下图所示,左边白色的为st-link。缺点:价格贵,需另外供电。安装相应的驱动,根据电脑的位数选择合适的驱动安装,比如我的的64位,选择“dpinst_amd64.exe”。在工具栏点击魔术棒①,出现对话框②,点击“Debug”③,选择“ST-Link”④,再点击旁边的“settings”。
2023-11-14 11:02:11
2937
转载 2、stm32F103入门学习--开发环境搭建(二)
点击工具栏中的魔术棒①,弹出如图②所示的对话框,选择“Output”③,在“Create HEX File”中勾选,确定。弹出如下对话框,此时能看到我们选择的是“Editor”,然后根据红色框进行配置,其中“Tab size:4”的意思是在写程序时按下“tab”键,会缩进4,这样比较方便。首先在Keil上编写一段小程序,先不介绍代码,点击下工具栏的编译,编译可以简单地认为是将我们写的代码变成单片机可以识别的代码,毕竟人跟机器还是语言不通。按红色框选择,按①②③操作,点击③出的箭头。回到主界面,看一下效果。
2023-11-14 10:55:53
108
转载 1、stm32F103入门学习--开发环境搭建(一)
这款是网上销量比较多的板子,我找板子主要还是看价格,20元左右,不需要太贵,只是做个核心入门,不要太多的外设,特别是对初学者,因为从来没见过单片机会认为一大块板子就是单片机,其实很多是商家开发的外设,基础学好了以后扩展也很方便,那么我主要以这块板子为例跟大家一起探索stm32。
2023-11-14 10:51:50
446
原创 ESP32 FreeRTOS 任务通知4(使用直接任务通知当作邮箱)
巧用直接任务通知的32Bits来封装打包多个数据后传递,接收到后,如何对数据进行还原,如图所示。
2023-11-13 21:28:33
95
原创 FreeRtos API 查看
进入官网后可以点击Developer Docs进入开发者文档进行查看。其中API References可点击查看会有详细的函数用法。选择Support-Books&Manuals可以查看相关书籍。可以通过使用FreeRTOS官网查看API,官网地址如下。
2023-11-13 21:05:23
206
原创 ESP32 FreeRtos 任务通知3(使用直接任务通知事件组)
任务通知使用的是32bits,而事件组是24bits,所以,只要不是涉及多个任务, 那么这个直接任务通知可以完全取代事件组。
2023-11-13 20:55:11
105
原创 ESP32 FreeRtos 任务通知2(直接任务通知取代二进制信号量)
直接任务通知相当于指定任务的二进制信号量。如需要实现三个发动机任务(因发动机需要经常运转来保持健康状态,所以三个任务需要轮流运行),而直接任务通知是指定任务,无法实现,因此,需要二进制信号量进行任务通信。API:xTaskNotifyGive // 相当于精简化的 xTaskNotify() + eIncrement (+1)
2023-11-13 17:12:11
136
原创 ESP32 FreeRtos 任务通知1(直接任务通知)
一个任务可以有多个notification,每个notification包含4个字节的value 和 1个字节的stats。stats用来记录当前的notification有没有被处理 pending or not pending,我们不能对stats进行直接的读写操作,是系统自动的。我们只能对notification value 进行操作。
2023-11-13 16:13:14
153
原创 ESP32 FreeRtos 消息缓存 Message Buffer
Message Buffer是基于Stream Buffer的。Message Buffer与Stream Buffer相比,只是在每一次发送数据的时候多了四个字节的空间用于存放消息的大小。根据这个消息大小,读取方就可以一次读取出全部消息的内容。队列、流媒体、消息缓存的对比,如图所示。
2023-11-13 15:08:35
129
原创 ESP32 FreeRtos 流媒体
FreeRTOS 10以后引入了一个新的数据类型就是 Stream Buffer。它和Queue最大的不同就是,Stream Buffer读写的大小没有限制,而Queue是预设值好固定的类型和大小。Stream Buffer 流媒体缓存顾名思义它的受众对象就是流媒体,比如MP3,视频,在线电台等。
2023-11-13 11:48:20
224
原创 ESP32 FreeRtos 事件标志组
RTOS中的信号量、邮箱和消息队列都是事件。通过这些事件可以实现任务之间及任务和中断服务程序之间的通信。但信号量、邮箱和消息队列只能允许任务在阻塞状态下等待单个事件发生。当这些事件发生时,只能取消单个任务的阻塞状态。被取消阻塞状态的任务是等待事件列表中优先级最高的任务,对于FreeRtos,如果具有相同高优先级的任务等待该事件,则等待时间最长的那个任务获得该事件,从而取消阻塞状态。而事件组是RTOS的另一个功能,使用事件组可以实现多任务之间的同步。其具有如下特性。
2023-11-13 10:17:49
126
原创 ESP32 FreeRtos 二进制信号量
信号量可以是二进制信号量也可以是计数信号量。二进制信号量可以看作是计数信号量的一种特殊形式,一般用于对共享资源的访问,信号量的初始值设为1。在计数信号量的情况下,计数值通常被实现为一个简单的无符号整数。当发送一个计数信号量时,增加信号量的值。当获取一个信号量时,则计数值递减。在任务获取信号量时,如果该值为0,则任务被阻塞,直到有其他任务或中断服务程序发送该信号量,该任务才退出阻塞状态进入就绪状态,如果此时该任务是就绪表中优先级最该的任务则获得运行的机会。
2023-11-10 21:54:46
291
原创 ESP32 FreeRtos 队列传输单种类数据
队列是一种数据结构,可以包含一组固定大小的数据。在创建队列的同时,队列的长度和所包含数据类型的大小就确认下来了。一个队列可以有多个写入数据的任务和多个读取数据的任务。当一个任务试图从队列读取数据的时候,它可以设置一个阻塞时间(block time)。这是当队列数据为空时,任务会进入阻塞状态的时间。当有数据在队列或者到达阻塞时间的时候,任务都会进入就绪状态。如果有多个任务同时在阻塞状态等待队列数据,优先级高的任务会在数据到达时进入就绪状态;在优先级相同的时候,等待时间长的任务会进入就绪状态。
2023-11-10 19:31:06
170
原创 ESP32 FreeRtos 看门狗
说明:看门狗是针对Task任务的Arduino-ESP32 默认在Core 0的 IDLE 任务开启了看门狗 时间为 5000 ticks = 5秒Core 0 和 Core 1 都运行了 FreeRTOS的IDLE任务,优先级为 0IDLE任务是用于清理被删除任务的内存Core 1 loopBack任务就是Arduino的 setup 和 loop 优先级为 1需要注意的是ESP32在Arduino编译器内,是自动在核心0开启看门狗的,并自动进行喂狗。
2023-11-09 21:55:10
1273
1
原创 Arduino-ESP32使用FREERTOS使用相互排斥Mutex来解决竞争冒险Race Condition
B站UP主孤独的二进制视频的学习笔记
2023-11-05 21:24:27
393
1
原创 Arduino-ESP32使用FREERTOS实现任务通过结构体指针传递多参数
实现功能同Arduino-ESP32使用FREERTOS实现多任务电灯。在上面的基础上实现三个LED同时闪烁,并使用串口打印信息。创建两个任务实现,两个LED灯的闪烁。首先,进行结构体指针的定义。
2023-10-15 21:41:24
341
1
空空如也
ESP32的BLE移植
2024-01-16
BOOST升压电路和H桥转换电路
2024-01-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人