![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ESP32
文章平均质量分 93
折途想要敲代码
_(:ι」∠)_好饿,但是不想动
展开
-
【ESP-IDF FreeRTOS】任务管理
首先我们通过ESP-IDF FreeRTOS可以创建多个任务,正常情况下任务是“并行”的(看起来是并行的,实际上是通过分割时间片来轮流运行,因为太快了所以在我们看来就是并行的),但严格说来,在一个时间点上,CPU只能执行一个任务(多核除外,多核是每个核都可以执行一个任务),那么正在执行的任务就处在运行状态,而其他没执行的,在等待执行的任务就处在就绪状态。且这个函数的返回值是任务的句柄,而我们动态分配的函数的任务句柄是通过最后一个传出参数给我们的,也就是说静态分配比动态分配要多出两个参数。原创 2024-08-22 16:54:42 · 969 阅读 · 0 评论 -
【ESP-IDF FreeRTOS】概括介绍&API命名规则&延时函数
举个例子吧,比如说我第一个参数给它传入8点,第二个参数给它传入俩小时,那么不管我在几点的时候调用它,我都会延时到8+2 = 10点,如果我八点调用,那么就是延时俩小时,如果我九点调用,那么我还是延时到10点,也就是延时一小时。我们一般买的开发板是ESP32型号的(没错,有个型号就叫ESP32,所以我在上一段强调了一下ESP32的这种说法,大家根据语境自行判断ESP32是指特定型号还是泛指这类芯片),基本是支持双核的,但还是有个版本是单核的。最终我们可以看到,它的值就是我们一开始设置的值。原创 2024-08-22 16:54:36 · 879 阅读 · 0 评论 -
【ESP-IDF】看门狗定时器
不过这不意味着我们只能使用任务看门狗,因为中断看门狗是默认就开启的,这也是为什么我们不能在中断里执行太久,否则就会重启的原因。,它其实不叫外部晶振看门狗定时器,编程指南里是叫它XTAL32K看门狗定时器的,因为它使用的时钟源是32K的外部晶振,所以我觉得这么叫比较好理解才这么叫的)。看门狗定时器的中断执行函数就是给我们的程序重启,因此我们需要在它中断之前把计数器的值清零(喂狗),否则就会不断重启。任务看门狗定时器是基于定时器组0的看门狗定时构建的,而中断看门狗定时器用的是定时器组1里的。原创 2024-08-06 14:56:06 · 727 阅读 · 1 评论 -
【ESP-IDF】ESP32获取真随机数
我翻了好几个型号的ESP32的编程指南,都有相关的函数,应该是大部分型号都有,具体有没有还需要对照一下自己手上的ESP32型号。另外产生真随机数的条件就是有噪声作为随机数发生器的随机数种子,因此我们再调用上面函数获取随机数之前还需要保证有随机数种子。我们可以从从随机数发生器的寄存器 RNG_DATA_REG 中读取随机数,每个读到的 32 位随机数都是真随机数。我们一开始就看了随机数发生器的寄存器,它就是32位,那么我们是怎么获取到除了32位之外位数的随机数呢?那么ESP32是怎么做到真随机数的呢?原创 2024-08-06 14:55:05 · 406 阅读 · 0 评论 -
【快速上手ESP32(ESP-IDF)】ADC数模转换(含单次转换和连续转换以及校准)
这篇为重置版。因为准备录制视频了,然后回过头看看之前讲ADC的文章发现有不少错误的地方(但是代码是可以用的),而且讲的也不全面,因此决定写下这个重置版。这边提供三种使用ADC的方法,第一种是老方法,我就直接把之前的文章给复制过来并进行部分修正。看过的小伙伴可以跳过,直接看单次转换模式和连续转换模式。原创 2024-07-29 08:04:40 · 930 阅读 · 0 评论 -
如何在ESP-IDF中使用C++
简单来说,如果是C调用C++的函数,那么这个函数的声明和定义都需要用extern "C"来链接一下,而如果是C++调用C的函数,则只需要用extern "C"声明。ESP-IDF是支持C++的,虽然默认是C语言,我们平时用的也是C语言,文档里提供的API也是C语言的,但是实际上我们是可以使用C++来编写的。毕竟C++基本上是可以兼容C语言的,所以我们在C++里使用C语言的API是没有问题的。如果我们需要C和C++混用,那么就会出现C调用C++函数或者是C++调用C函数。可以正常使用C++的语法以及STL。原创 2024-07-29 08:04:07 · 584 阅读 · 0 评论 -
【硬件模块】SGP30气体传感器
这是SGP30官方文档里开头的介绍,简单来说就是SGP30是一个数字多像素气体传感器,然后具有长期稳定性和低漂移。这些我们都不用管,我们只需要知道SGP30是通过I2C来通信的,并且可以采集的数据有CO2和TVOC的含量。TVOC是“Total Volatile Organic Compounds”,意思是总挥发性有机化合物。可以来看一下它的参数。TVOC的输出范围是0~60000ppb,而CO2的范围是400~60000ppm。一开始没注意范围,我看CO2一直都在400以上还以为出了啥问题。原创 2024-07-03 10:48:34 · 1105 阅读 · 0 评论 -
【硬件模块】SSD1306 OLED屏幕(含GD32&ESP32驱动代码)
最近在写GD32的文章,之前STM32有OLED屏幕来展示数据,ESP32可以直接打印到电脑屏幕上,GD32的话手上就没有办法了。虽然是可以直接把STM32的OLED屏幕的驱动代码改改移植到GD32上面,不过想了想干脆写一个文章来说说如何驱动,也当是锻炼一下看文档的能力了。没错,SSD1306也是只有英文文档,找网站直接翻译中文的效果不太好,不过我还是把译文结合原文再看看江科大的STM32的OLED驱动代码给啃了啃,因此这很考验我的耐心。原创 2024-06-14 19:39:35 · 1625 阅读 · 1 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】11-MQTT
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅模式的轻量级通讯协议,构建于TCP/IP协议之上。它最初由IBM在1999年发布,主要用于在硬件性能受限和网络状况不佳的情况下,为远程设备提供可靠的消息传输服务。MQTT协议简单易用、可靠性高、延迟低,因此广泛应用于物联网(IoT)、机器人、智能城市管理、农业物联网以及能源监测与管理等领域。MQTT协议由三个主要部分组成:客户端、服务器和主题。原创 2024-04-26 17:23:20 · 2320 阅读 · 0 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】10-事件循环&&WiFi
本来这篇文章是只写WiFi的,但是写的时候才发现离不开事件循环,因此再多添一点内容在WiFi前面。事件循环简单来说就是一个(循)环,我们可以在这个环上绑上一些事件,我们也可以监听这个环,当环上发生了事件,那么监听了对应事件的的处理函数就会执行,可以参考FreeRTOS的事件组。原创 2024-04-26 17:19:44 · 1164 阅读 · 0 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】09-Flash存储
关于ESP32中的Flash,我们需要再回顾一下命名规则。我用的是立创开发板设计的板子,芯片型号是ESP32S3R8N8,因此可以知道我这块板子有8MB的Flash,大家可以参照着命名规则看看自己有多大的Flash容量。原创 2024-04-22 19:15:34 · 1204 阅读 · 0 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】08-SPI
SPI,全称Serial Peripheral Interface,即串行外设接口,是一种同步串行接口技术。它最初由Motorola公司推出,并在其MC68HCXX系列处理器上首次定义。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,以及数字信号处理器和数字信号解码器之间。在应用场景方面,SPI协议被广泛应用于工业自动化、通信、航空航天等领域。在嵌入式系统中,SPI主要用于连接各种外设,如存储器、传感器、显示器等。原创 2024-04-22 19:15:06 · 1213 阅读 · 0 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】07-I2C(附BH1750实战代码)
I2C,全称Inter-Integrated Circuit,是一种用于在集成电路之间进行短距离数据传输的通信协议。它最初由Philips(现在的NXP半导体)公司于1980年代初开发,现已成为广泛应用于电子设备之间通信的标准。I2C协议简单、灵活且广泛支持,常被用于连接传感器、存储器、显示屏和其他外设到微控制器、微处理器或其他集成电路上。其数据传输遵循一定的帧格式,每8位传输完成后,第九位是应答位。在硬件层面,I2C采用多主从架构,每个设备都有唯一的地址,一个主设备理论上可以连接多达127个从设备。原创 2024-04-20 10:52:59 · 1629 阅读 · 0 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】特别篇——一文速通FreeRTOS
这边插一篇介绍FreeRTOS的文章,因为我在写后续快速上手ESP32系列的文章的时候发现FreeRTOS是越不过去的坎,因此这边补充一下。原创 2024-04-20 10:52:26 · 2019 阅读 · 0 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】06-ADC模数转换
我们照例是请文心一言来介绍一下ADC。ADC具有多重含义,以下为你详细介绍其中两种主要的含义:首先,ADC在电子游戏领域中,特别是在MOBA类游戏中,指的是Attack Damage Carry或Attack Damage Core,即普通攻击持续输出核心。它代表那些以普通攻击为主要输出方式,能造成持续伤害输出的角色。在《刀塔》这样的游戏中,ADC通常指的是那些以物理攻击为主要输出方式的核心英雄。原创 2024-04-16 11:35:38 · 980 阅读 · 0 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】05-UART串口通信
UART,即通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),是一种异步收发传输器,是电脑硬件的一部分,它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连接上。UART用于异步通信,异步通信以一个字符为传输单位,通信中两个字符之间的时间间隔是不固定的,然而在同一个字符中的两个相邻位之间的时间间隔是固定的。因此,异步通信的特点就是:字符间异步,字符内部各位同步。原创 2024-04-10 16:01:51 · 2014 阅读 · 0 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】04-PWM
PWM,即脉冲宽度调制(Pulse Width Modulation),是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而达到控制开关稳压电源输出的目的。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通信,功率控制与变换等许多领域。PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。原创 2024-04-10 16:01:13 · 1417 阅读 · 0 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】03-定时器
通用定时器是 ESP32 定时器组外设的驱动程序。ESP32 硬件定时器分辨率高,具有灵活的报警功能。定时器内部计数器达到特定目标数值的行为被称为定时器报警。定时器报警时将调用用户注册的不同定时器回调函数。在ESP32-S3中,一共有两个定时器组,每个定时器组中各有两个通用定时器以及一个看门狗定时器。每个通用定时器都有16位预分频器和54位可自动重新加载向上/向下计数器。通用定时器通常在以下场景中使用:如同挂钟一般自由运行,随时随地获取高分辨率时间戳;生成周期性警报,定期触发事件;原创 2024-04-05 14:10:43 · 2077 阅读 · 2 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】02-GPIO外部中断
ESP32的中断矩阵是一个关键组件,它负责将外部中断源单独映射到每个CPU的外部中断上。在ESP32的实际应用中,中断矩阵的作用不可忽视。它使得CPU能够高效地处理来自各种外设的中断信号,从而实现对系统资源的有效利用和响应速度的提升。通过合理地配置中断矩阵,开发人员可以优化系统的性能,提高系统的稳定性和可靠性。以上描述来自文心一言。简单来说就是ESP32通过中断矩阵,在外部中断这块很强。每个CPU可以有32个中断,而ESP32是双核的,因此理论上可以处理64个中断。原创 2024-04-05 14:10:17 · 1395 阅读 · 0 评论 -
【快速上手ESP32(基于ESP-IDF&VSCode)】01-环境配置&GPIO口&延时函数(先点个灯)
立创开发板之前出了个ESP32S3R8N8的开发板,当时嫖了个优惠券,九块九拿下了。现在不仅是35.9一个,而且还没货。如果真的想要的小伙伴可以自己去打板焊一个,人家开源了(目测难度较大,反正我是焊不上去的)。立创·ESP32S3R8N8开发板 - 嘉立创EDA开源硬件平台立创·ESP32S3R8N8开发板 - 嘉立创EDA开源硬件平台,开源广场汇集了多种类型的电路设计工程,快速实现资源共享!前阵子在忙别的事,然后这块板子一直在吃灰,最近没啥事就拿了起来。跟着人家立创官方的文档学一学。原创 2024-03-29 21:58:49 · 1734 阅读 · 0 评论