自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 FreeRTOS教程 - 任务间通信:使用队列(Queue)

队列是FreeRTOS数据传输方式的一种,可以用于任务间数据传输,也可用于任务与中断间数据传输。在之前的教程中,我们在每个任务中都直接使用串口打印信息,这种结构存在一定问题:每个任务既需要产生数据(如处理传感器数据等),又需要关心数据的显示,导致任务逻辑层次不清晰。把显示相关程序单独拿出来,组成一个显示任务其他任务只需要将各自要显示的数据写入队列显示任务只需要从队列中读取数据进行显示任务1到3可以专注自己的数据生成,而不需要关心如何显示数据。

2025-04-16 00:39:37 750

原创 FreeRTOS 任务参数详解与实践

今天我们学习了 FreeRTOS 任务参数的基本使用方法,通过一个实例展示了如何使用同一个任务函数创建多个任务,并通过不同参数实现不同功能。减少代码冗余,提高代码复用性使任务函数更加通用和灵活简化任务间数据传递在下一篇文章中,我们将探讨 FreeRTOS 的任务通知机制,它是一种比信号量更轻量级、更高效的任务间通信方式。,里面有完整的从入门到精通的教程和示例代码!作者简介:嵌入式开发爱好者,专注于 FreeRTOS 和 STM32 开发,分享嵌入式开发技术和经验。

2025-04-15 00:34:51 1312

原创 OpenCV图像增强实战教程:从理论到代码实现

📚 想要掌握图像增强的核心技术?本文手把手教你使用OpenCV实现多种图像增强技术,从基础的线性变换到高级的频域滤波,全方位提升你的图像处理能力!适合初学者和进阶开发者!

2025-04-14 22:10:43 954 2

原创 OpenCV图像处理进阶教程:几何变换与频域分析全解析

通过本文的实验,我们系统学习了OpenCV中的几何变换和频域分析技术,这些是计算机视觉中不可或缺的基础工具。从简单的平移到复杂的频域变换,每种技术都有其特定的应用场景和优势。变换类型主要函数应用场景注意事项平移图像对齐、ROI提取注意边界处理方式缩放cv2.resize金字塔分析、预处理不同插值方法影响质量和速度旋转方向归一化、姿态校正旋转后尺寸变化傅里叶变换频域滤波、周期模式检测复数结果需特殊处理离散余弦变换cv2.dct图像压缩、特征提取能量集中在左上角。

2025-04-14 20:28:43 479

原创 OpenCV图像处理基础实战:从零开始的算法与实现详解

路径验证:使用双重预检查文件路径raise FileNotFoundError(f"文件if not os . path . exists(file_path) or not os . path . isfile(file_path) : raise FileNotFoundError(f"文件 {file_path } 不存在或不是有效文件")

2025-04-13 13:13:21 768

原创 使用PyCharm安装和配置OpenCV的详细教程

Win + Rcmd:如果需要科学上网,请确保网络环境支持。4.11.0。

2025-04-13 11:44:29 450

原创 第十二章:FreeRTOS多任务创建与删除

多任务创建方式可以直接创建多个任务也可以通过一个启动任务来创建其他任务(这是更常用的方式)任务删除使用函数删除任务删除自身时,参数传入NULL删除其他任务时,传入相应任务的句柄线程安全printf函数是非线程安全的,在多任务环境中使用时需要保护可以使用临界区(和)来保护非线程安全的代码任务执行顺序直接创建的相同优先级任务,执行顺序可能与创建顺序不同通过启动任务创建的相同优先级任务,执行顺序通常与创建顺序一致。

2025-04-12 19:13:09 1572

原创 第十一章:FreeRTOS项目工程完善指南:STM32F103C8T6系列

完整的FreeRTOSConfig.h配置文件串口通信功能printf调试输出功能更规范的中断处理方式这些改进使得我们的FreeRTOS工程更加健壮和实用,为后续开发复杂应用奠定了良好基础。📚获取完整代码和更多示例如果这篇文章对你有帮助,请给我的GitHub仓库点个Star!你的支持是我持续更新的动力。

2025-04-10 23:40:08 1237

原创 第十章:FreeRTOS内存管理深度解析:从原理到heap_4的最佳实践

FreeRTOS的内存管理机制(特别是heap_4)为嵌入式系统提供了灵活而高效的动态内存分配方案。heap_4的核心价值在于平衡了分配效率与碎片控制,适合大多数嵌入式应用场景块合并机制是解决内存碎片化的关键技术内存分配耗时与空闲块数量相关,但远优于最佳适应算法内存对齐处理能显著提升ARM架构访问效率随着物联网和边缘计算的发展,嵌入式系统对内存管理的要求越来越高。非侵入式内存分析工具集成针对特定MCU架构的优化变体更智能的自适应分配策略,欢迎关注、Star和贡献!

2025-04-10 11:21:44 722

原创 第九章:FreeRTOS编程风格深度解析:提升源码阅读与开发效率的黄金法则

在/* 处理器架构适配层 */char// ASCII字符处理short// 16位快速运算long// 32位原子操作uint32_t// Cortex-M系列堆栈对齐类型long。

2025-04-10 09:19:35 846

原创 第八章:FreeRTOS静态任务创建(2025.4.9巨详细)

选择静态任务:当系统要求确定性、资源受限或需长期稳定运行核心功能时。选择动态任务:在需要灵活扩展、临时任务管理或资源充足的中大型应用中。可通过修改FreeRTOS配置文件()中的宏定义来切换两种任务创建模式。// 定义空闲任务控制块 StaticTask_t IdleTaskTCB;第二个参数需要一个堆栈空间,第三个是堆栈空间大小。// 定义空闲任务栈数组,大小为最小栈大小 StackType_t IdleTaskStack [ configMINIMAL_STACK_SIZE ];

2025-04-09 12:52:36 1436 1

原创 第一章:从裸机开发到实时操作系统:FreeRTOS入门指南

裸机开发(也称为裸金属编程)指在没有操作系统的情况下,直接与硬件进行交互的开发方式。开发者需要完全控制和管理硬件资源,这就像是驾驶一辆没有任何电子辅助系统的手动挡汽车。多任务管理:同时管理多个任务,合理分配资源高效调度:通过优先级和时间片分配,确保快速响应可预测性:保证在指定时间内完成任务,适合对时间精度要求高的场合轻量级设计:专注核心功能,适合资源有限的嵌入式系统从裸机开发到实时操作系统,FreeRTOS为我们提供了一种高效方式来管理多任务和硬件资源。FreeRTOS核心原理和内部机制。

2025-04-08 23:44:11 999

原创 第六章:freertosconfig.h核心函数详解(官方最新版,附FreeRTOSconfig.h归类完的完整中文注释)

如果您有任何问题,欢迎在评论区留言讨论。,欢迎Star⭐和Fork!,欢迎Star⭐和Fork!

2025-04-07 22:31:37 973

原创 第七章:FreeRTOS动态任务创建

本文将详细讲解如何在STM32平台上创建一个简单的FreeRTOS程序,并通过一个LED闪烁任务来验证程序的正确运行。整个过程将按照步骤一步一步展开,确保即使是初学者也能轻松上手。源码获取首先定义一个任务句柄,它是FreeRTOS中用于操作和管理任务的标识符。问题:编译时出现PendSV_Handler、SVC_Handler或SysTick_Handler函数重定义错误。解决方案:检查是否正确注释了中的对应函数。

2025-04-04 21:41:44 1634

原创 第五章:FreeRTOS移植到keil6(2025.4.2最新版保姆级教程)

通过以上步骤,我们成功完成了FreeRTOS在STM32平台上的移植。获取并配置FreeRTOS源码创建工程并添加必要文件修改相关配置文件解决编译问题移植完成后,您就可以开始使用FreeRTOS进行开发了。FreeRTOS作为一个轻量级的实时操作系统,在嵌入式系统开发中有着广泛的应用。

2025-04-02 01:08:11 1222

原创 3.单词拆分

若 `dpj` 为 `true`(即前 `j` 个字符已合法),且子串 `sj..i-1` 存在于字典中,则 `dpi` 设为 `true`。外层遍历 `i` 从 `1` 到 `s.length()`,内层遍历 `j` 从 `0` 到 `i-1`。2. `i=8` 时,`j=4`,子串 `"code"` 在字典中,`dp8` 设为 `true`,最终返回 `true`。1. `i=4` 时,`j=0`,子串 `"leet"` 在字典中,`dp4` 设为 `true`。1. 动态规划数组初始化。

2025-04-01 09:19:54 400

原创 第四章:Keil6建立一个工程文件夹(2025.3.31保姆级教程)

解压下载的文件,导航至Drivers\CMSIS\Include目录,复制core_cm3.h、cmsis_armclang.h、cmsis_compiler.h、cmsis_version.h这几个文件,覆盖旧的core_cm3.h文件,然后删除core_cm3.c文件,改用CMSIS标准接口。en.stsw-stm32054_v3-6-0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport,将这两个文件复制到Start文件夹。

2025-03-30 23:36:51 1239

原创 第三章:Keil MDK-ARM 5.42a 完整安装指南(2025.3.29最新版)

本文已通过系统实测验证,适用于嵌入式开发初学者及专业工程师。

2025-03-29 17:12:08 1944

原创 第二章: FreeRTOS深度解析

FreeRTOS(Real Time Operating System)诞生于2003年,由Richard Barry主导开发,是专为微控制器(MCU)设计的实时操作系统内核。与μC/OS、RT-Thread等同类系统相比,FreeRTOS凭借独特的优势在工业控制(占比32%)、消费电子(28%)和汽车电子(19%)领域占据主导地位(数据来源:2024年嵌入式系统市场报告)。实测数据显示,heap_4的内存利用率可达92%,优于标准malloc的78%。

2025-03-29 13:51:22 743

原创 第一章:裸机开发和操作系统的区别

更重要的是,如果其中一个人(如A)在中间需要酝酿一段时间,后面的人(B、C)就不得不长时间等待,导致资源利用率低下。在后续的内容中,我们将深入探讨FreeRTOS的核心原理、任务管理、同步机制等详细内容,帮助你在实时操作系统领域迈出坚实的一步。例如,在一个多任务系统中,操作系统通过高效的调度算法,确保每个任务的执行时间在可控范围内。通用操作系统(如Windows、Linux、macOS)在个人电脑中广泛应用,它的主要功能是作为硬件和应用程序之间的桥梁,屏蔽硬件的复杂性,简化用户的操作。

2025-03-29 13:31:09 254

原创 引言:FreeRTOS实时操作系统教程 | 嵌入式开发进阶指南

欢迎来到FreeRTOS实时操作系统教程!本教程专为已掌握C语言和32位单片机开发基础的开发者设计,旨在帮助您深入理解实时操作系统的核心概念,提升嵌入式系统开发能力。

2025-03-29 13:13:01 330

原创 最长回文子串

/ 若以 i' 为中心的最长回文子串范围超出了以 box_m 为中心的回文串的范围(即 i+half_len[i'] >= box_r)// 结合上文的下标转换关系,得到其在 s 上的下标范围是从 (max_i-hl)/2 到 (max_i+hl)/2-2。- `max_i` 对应预处理后的回文中心,例如 `t = "^babad$"` 中 `max_i=6`(对应字符 `b`)。- 若当前字符 `i` 在 `box_r` 内,则其镜像点 `mirror = 2*box_m - i`。

2025-03-29 02:04:31 841

原创 Leet code 221.最大正方形

/ DP数组,dpij表示以(i,j)为右下角的最大正方形边长。if (i == 0 || j == 0) { // 处理第一行或第一列的边界情况。对于非边界的'1'元素,其最大边长由三个相邻方向(左、上、左上)的最小值决定,再加1。if (matrixij == '1') { // 当前元素是1才可能构成正方形。第一行或第一列的元素若为'1',只能构成边长为1的正方形(无法向左/上扩展),因此直接赋值为1。- 空间复杂度:O(mn),使用二维DP数组(可优化至O(n)或O(1),如网页1所述)

2025-03-27 11:03:55 232

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除