- 博客(60)
- 收藏
- 关注
原创 FreeRTOS 核心模块初步学习总结与优化
这篇博客对之前发布的FreeRTOS部分内容进行了总结和修正,涵盖了Task、Queue、SoftwareTimer、Semaphore、Event、Notification、StreamBuffer和MessageBuffer等重要模块,在总结过程中修正了自己作为初学者时曾犯的错误,并对文档进行了格式整理,删去了不必要的内容,力求让内容更加简洁、易懂,便于参考
2025-01-19 14:21:53
964
原创 ESP32学习笔记_FreeRTOS(7)——Stream and Message
本文介绍了FreeRTOS中的流缓冲区(StreamBuffer)和消息缓冲区(MessageBuffer)的使用,重点讲解了它们在任务间数据传输中的应用。流缓冲区适用于实时数据流的传输,支持单一写入者和读取者,而消息缓冲区则用于传递定长消息,确保数据传输的精确性。通过详细的函数使用示例,本文帮助开发者理解如何创建、发送、接收以及重置这些缓冲区,从而优化任务间的通信和同步,提升实时系统的数据处理效率
2025-01-19 12:59:39
953
原创 ESP32学习笔记_FreeRTOS(6)——Event and Notification
这篇博客详细介绍了FreeRTOS中的事件组和任务通知机制,讲解了事件组如何通过位操作实现任务间的同步与通信,以及任务如何通过通知机制进行阻塞解除和数据传递。博客提供了多个代码示例,展示了如何使用事件组和任务通知在多任务环境中实现任务同步,特别适用于任务间的依赖关系和信号传递
2025-01-18 21:32:18
1136
原创 ESP32学习笔记_FreeRTOS(5)——Mutex
这篇博客内容围绕 FreeRTOS 中的互斥量(Mutex)和递归互斥量(Recursive Mutex)的使用进行了详细的介绍。整体结构清晰,涵盖了互斥量的基本概念、使用方式以及与其他同步机制(如二进制信号量)的比较,还提供了两段示例代码,演示了互斥量和递归互斥量在任务同步中的应用
2025-01-15 22:52:30
1042
原创 I2C学习笔记
本篇笔记深入总结了I2C协议的基本概念和应用场景。I2C协议作为一种简单的通信协议,其操作流程和数据传输方式相对容易理解,适合作为学习其他更复杂协议的入门。本文结合了I2C的官方文档以及多个设备的技术手册,全面地展示了I2C协议在实际开发中的各个方面,包括其工作原理、优缺点、常见的使用场景和在不同设备中的实现方式。
2025-01-07 16:11:43
998
原创 ESP32学习笔记_FreeRTOS(4)——Semaphore
这篇博客详细介绍了 FreeRTOS 中二值信号量和计数信号量的基本概念、API 使用方法及实际应用场景,辅以完整的示例代码,适合初学者学习
2024-12-15 16:51:06
665
原创 ESP32学习笔记_Peripherals(2)——i2C
这篇博客以ESP32的I2C通信为核心,深入讲解了I2C协议基础知识、ESP32硬件支持及其API使用方法,适合嵌入式开发者快速上手I2C编程。文章逻辑清晰,从理论到实践层层展开,涵盖了I2C通信原理、总线特性、上拉电阻的选择等基础内容,并结合ESP-IDF的API对I2C主从模式的安装、卸载、数据读写进行了详尽说明。通过表格和代码示例,详细展示了API参数和返回值的用法,代码部分以ADXL345加速度传感器为案例,提供了完整的初始化和数据读取流程,注释详尽,便于实操应用。
2024-12-12 15:14:51
980
原创 ESP32学习笔记_Peripherals(1)——UART
这篇博客详细讲解了 ESP32 UART 通信的基础知识、配置流程和实践代码,涵盖了 UART 的工作原理、API 使用方法以及实际应用场景,结合完整的代码示例展示了如何与外部设备(如 4G 模块)进行串口通信。内容逻辑清晰,注释详尽,并附有运行调试截图验证效果,实用性强
2024-11-28 14:53:21
818
原创 ESP32学习笔记_FreeRTOS(3)——SoftwareTimer
这篇笔记全面介绍了 FreeRTOS 软件定时器的核心概念和使用方法,包括定时器的创建、管理、常用 API 和辅助函数,并通过示例代码演示了如何启动、重置和更改定时器的周期。它强调了软件定时器的灵活性、平台无关性以及与硬件定时器的对比
2024-11-26 23:05:03
1058
原创 ESP32学习笔记_FreeRTOS(2)——Queue
在嵌入式系统开发中,任务之间的高效通信是实现多任务协作的关键。FreeRTOS 提供了强大的队列机制,支持任务之间安全、灵活地传递数据,是实现任务同步和事件通知的核心工具。本篇博客将全面解析 FreeRTOS 队列的工作原理和应用场景,从基础操作到高级功能(如队列集合和邮箱)的深入探讨
2024-11-24 21:26:45
747
原创 ESP32学习笔记_Bluetooth(1)——蓝牙技术与 BLE 通信机制简介
这篇笔记详细讲解了蓝牙技术的分类、核心架构和通信流程,重点介绍了低功耗蓝牙(BLE)的协议栈、角色划分及连接机制,结合拓扑示例清晰阐述了蓝牙网络配置和操作过程
2024-11-24 21:25:13
1366
原创 ESP32学习笔记_FreeRTOS(1)——Task的创建和使用
本文基于 FreeRTOS 和 ESP-IDF,讲解了任务管理、优先级设置、堆栈监控及任务看门狗(IWDT 和 TWDT)等核心功能,涵盖任务创建、挂起、时间片轮转和任务调度等内容。通过代码示例说明如何使用 vTaskList() 获取任务状态,利用 uxTaskGetStackHighWaterMark() 检测栈溢出,以及订阅任务看门狗以监控长时间运行任务。文章详细分析了调度器机制及错误日志,如 TWDT 超时问题,并结合 ESP-IDF 的配置说明(如 Menuconfig 设置)提供优化建议。
2024-11-10 20:57:19
856
原创 ESP32外设的简单使用
本文详细讲解了ESP32在Arduino环境下的Wi-Fi、串口通信(UART)、I2C、定时器、蓝牙等功能的使用方法。每个功能模块都包含了关键函数、参数说明、注意事项及代码示例,帮助读者快速掌握ESP32的核心功能。文章还特别强调了编程中的常见问题,例如UART1引脚冲突、中断中避免使用阻塞函数等,避免了在实际项目中遇到的陷阱。整体结构清晰,逻辑流畅,非常适合ESP32初学者和开发者进一步了解和应用。
2024-10-31 21:42:19
1411
原创 51 AutoLeaders控制组——51单片机任务
模式2要求最后两位显示数字按1s的频率改变,那么这里我们需要写一个类似计时器的程序来计算一秒的时间,但是不能直接用延时函数,因为在延时函数执行的过程中我们是没有办法进行操作的,因此我们需要考虑其它的实现方法,这里我通过计算数码管的扫描此时来得到大致1s的时间。模式4的要求为每按一下K4,显示的数字加一,那么这里我们需要一段代码用于判断K4是不是被第一次按下(即K4被按下前是否处于模式4),当K4是第一次按下时,将计数器归零,否则计数器加1,最后在数字达到99时,加1则归零。时间周期:通常指一个时钟周期。
2023-11-18 15:08:18
269
原创 51 初识单片机
单片机(Micro Controller Unit, 简称MCU),内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能,常用于信息采集、处理和设备控制。
2023-11-13 15:29:08
248
原创 Py 异常、模块与包
import 模块名 as 别名from 模块名 import 功能名 as 别名可以将导入的模块、功能进行重命名,方便使用除了Python中已经有的模块,我们可以根据自己的需求定义自己的模块每一个Python文件都可以作为一个模块,模块的名字就是文件名(不包括.py后缀)# 新建一个名为my_mode的.py文件,放入下面的代码# 在原文件中调用my_modeprint(ret)# 输出3注意:当导入多个模块,且有多个模块中具有相同的功能名,当调用这个功能的时候,会调用后面导入的模块的功能。
2023-11-07 19:51:30
52
原创 Py 文件操作
当我们直接调用write时,内容并未真正写入文件,而是积攒在程序的内存(缓冲区)中,这样是为了避免频繁操作文件,导致效率下降。在with open语句块中,可以对文件进行操作,在操作完成后会自动关闭文件,避免遗漏close。num表示要从文件中读取的数据的长度(单位为字符数),如果不传入num,则读取文件中的所有数据。注意:当多次读取时(无论用什么形式读取),下一次读取会从上一次读取的结尾开始读取。当文件存在,会在内容的末尾进行追加,如果文件不存在,会创建文件并进行写入。
2023-11-05 19:56:14
66
原创 Py 函数进阶
def关键字可以定义带有名称的函数lambda关键字可以定义匿名函数(无函数名称)语法:lambda 传入参数:函数体(一行)函数体(执行逻辑)只能写一行匿名函数只能使用一次lambda设定的函数自带返回值,不需要自己写print(ret)# 输出3。
2023-11-05 11:47:46
57
原创 Py 数据容器
定义变量:变量名 = [元素1, 元素2, …]定义空列表:变量名 = []变量名 = list()列表内可以放各种元素,包括另一个列表# 列表的嵌套# 这个列表要有两个元素,每个元素都是列表变量名 = (元素1, 元素2, …)(把变量名去掉就是定义字面量)注意:当元组只有一个数据,数据后面需要加上括号,后面没加逗号时,变量会变成str定义空元组:法一:变量名 = ()法二:变量名 = tuple()(变量名称 = tuple() 实际上是得到了一个元组的类对象)
2023-11-04 21:12:50
63
原创 Py 函数
def 定义函数def 函数名(传入参数):函数体return 返回值在不需要传入参数时,传入参数可以不写,但是括号不能少;没有返回值时,返回值也可以不写。
2023-10-31 21:57:49
57
原创 Py 循环语句
在实际运用中,我们常常会遇到需要重复运用某个过程的需求,而将这段代码进行复制粘贴会使代码变得非常冗杂,且在遇到需要次数极大甚至时无穷时,这种方法显然不能满足需求,因此,对循环语句的运用就显得十分重要。
2023-10-26 13:26:19
105
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人