自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wanghao312的博客

嵌入式开发

  • 博客(302)
  • 收藏
  • 关注

原创 状态枚举和部件枚举

通过这些枚举值,LVGL 实现了高度灵活的样式系统和交互状态管理。:为控件的不同部分(如滑块背景、旋钮)设置独立样式。:根据控件状态(如按下、聚焦)显示不同样式。:描述控件的交互状态(支持按位组合。运算无效),用于精细化样式设计。:定义控件的子组件(按位组合。运算),用于动态样式控制。在 LVGL 样式中,通过。

2025-04-02 15:28:11 91

原创 LVGL 样式对象的生命周期管理--样式

必须保证样式对象生命周期:通过static、全局变量或堆内存优先使用静态声明:简单安全,适合大多数场景避免悬空指针:永远不要传递局部样式对象的地址给 LVGL。

2025-04-02 15:17:38 225

原创 样式相关函数及其参数、功能和使用场景

调色板宏(预定义 16 种颜色):LV_PALETTE_RED, LV_PALETTE_BLUE, LV_PALETTE_GREEN, ... // 共 16 种lv_palette_main(LV_PALETTE_BLUE) // 获取主色调lv_palette_lighten(LV_PALETTE_BLUE, 2) // 调亮lv_palette_darken(LV_PALETTE_BLUE, 2) // 调暗。

2025-04-02 15:01:59 518

原创 LVGL的部件详解

* 圆弧部件:用于创建圆弧形进度条或旋钮控件 */1。

2025-04-01 20:58:10 973

原创 LVGL配置文件lv_conf.h详解

基础设置宏名称功能说明典型值示例颜色深度(1/8/16/32位)32(ARGB8888)LV_DPI_DEF默认DPI值(影响控件默认尺寸)130使用自定义系统时间戳(代替LVGL内部计时)1。

2025-04-01 20:25:29 792

原创 LVGL 8.2 版本中常用库函数的分类说明

目录)和文档(https://docs.lvgl.io/8.2/)深入学习特定模块。以上覆盖了 LVGL 8.2 中约 90% 的常用场景。

2025-04-01 20:11:54 427

原创 LVGL 中父子对象的联动关系

✅子对象坐标相对于父对象,移动父对象会带动子对象。✅子对象默认可以超出父对象边界(需主动裁剪才会隐藏)。⚠️ 父子关系主要影响坐标系统和生命周期管理,不自动限制子对象大小/位置。

2025-04-01 20:02:24 223

原创 所有的对齐方式

掌握这些对齐方式可以高效实现复杂界面布局!如果需要更灵活的布局,建议结合 LVGL 的。若需相对于另一个对象对齐(而非父容器),使用。如果父容器大小变化(如屏幕旋转),需调用。对齐的参考点是父容器的对应位置。LVGL 支持百分比单位(需配置。)定义了控件的对齐方式。

2025-04-01 15:12:03 268

原创 LVGL最基本的构建一个按钮的函数介绍

获取当前活跃的屏幕对象(Screen Object)。LVGL 支持配置单位系统(如百分比、毫米),需通过。创建一个开关控件(Switch Widget)。含义:对齐后的水平偏移量(正值向右,负值向左)。含义:对齐后的垂直偏移量(正值向下,负值向上)。如果父容器大小变化(如旋转屏幕),可结合。含义:对象的宽度(单位:像素)。含义:对象的高度(单位:像素)。将对象对齐到父容器或指定位置。含义:要调整大小的目标对象。含义:要对齐的目标对象。父容器可以是屏幕、面板(设置对象的宽度和高度。

2025-04-01 14:18:01 347

原创 DMA2D功能与应用详解

DMA2D(Direct Memory Access 2D,二维直接内存访问控制器)是嵌入式系统中用于高效处理图形操作(如数据传输、填充、混合等)的硬件模块,常见于STMicroelectronics的STM32系列微控制器。通过DMA2D,开发者能显著优化图形性能,尤其在高复杂度或实时性要求高的场景中表现突出。

2025-03-31 16:45:05 283

原创 关于智能手表是否支持eSIM通信对功能影响

支持eSIM的智能手表可通过内置的嵌入式SIM卡直接连接蜂窝网络,无需依赖手机即可独立完成接打电话、收发短信、联网获取数据等操作。搭载eSIM的智能手表通常具备更强的硬件性能(如独立处理器、更大存储空间)和操作系统支持,可独立运行第三方应用。若需进一步了解具体型号的eSIM支持情况,可参考各品牌官网或运营商政策(如中国联通、中国移动的一号双终端业务)。此类手表通常仅支持基础功能(如心率监测、计步),复杂应用(如地图、支付)需依赖手机端同步数据。

2025-03-31 14:46:39 528

原创 FreeRTOS内存管理算法选择方法

即可选择 FreeRTOS 的内存管理算法。无需宏定义切换,但需注意不同算法的适用场景和额外配置要求。在 FreeRTOS 中,内存管理算法的选择并非通过宏定义直接切换,而是通过。FreeRTOS 提供了 5 种内存管理实现(文件加入工程,并配置。

2025-03-27 18:01:07 466

原创 基于队列(Queue)机制改进或构建而来的通信方法介绍

通过这种层级化的设计,FreeRTOS在保持队列核心机制的同时,为不同场景提供了最优的通信抽象。

2025-03-27 17:52:47 882

原创 FreeRTOS的Tickless低功耗模式的实现原理

值得庆幸的是:FreeRTOS 的低功耗 Tickless 模式机制已经处理好了这些难点。可以在本该空闲任务执行的期间,让MCU进入相应的低功耗模式;当其他任务准备运行的时候,唤醒MCU退出低功耗模式。2、任何中断均可唤醒MCU,若滴答定时器频繁中断则会影响低功耗的效果,可以关掉滴答定时器中断吗?解决方案:将滴答定时器的中断周期修改为低功耗运行时间,这样不就两全其美了!1、进入低功耗之后,多久唤醒?为了可以降低功耗,又不影响系统运行,该如何做?退出低功耗后,需补上系统时钟节拍数。一、低功耗机制的核心原理。

2025-03-27 17:40:32 666

原创 Tickless 低功耗模式,可以通过关闭外设更加省电

如果要进入其他模式,更加节能,需要修改底层代码,这个是可能存在冲突的,不要瞎改。如果想要更加节能,可以在下面两个函数中关闭更多没用到的外设,这样更安全。FreeRTOS 的 Tickless 低功耗模式与 STM32 硬件低功耗模式的结合需要谨慎处理,直接修改底层代码进入更深层次的低功耗模式(如停止模式)可能存在风险,而通过 configPRE_SLEEP_PROCESSING。停止模式会关闭主时钟(如 HSE/HSI),唤醒后需手动切换回 PLL,若未正确初始化时钟,可能导致系统崩溃。

2025-03-27 17:23:05 919

原创 Tickless 低功耗模式相关函数

是一种在系统空闲时暂停定时器中断(SysTick)的技术,允许微控制器(MCU)进入深度睡眠状态以降低功耗,直到下一个任务就绪或外部事件唤醒。所有唤醒中断(如 GPIO、RTC)必须配置为在低功耗模式下有效,并确保中断标志在唤醒后清除。使用万用表或功耗分析仪测量 MCU 在空闲时的电流,确认进入低功耗状态后电流显著下降。在睡眠前关闭或配置外设为低功耗模式,唤醒后需重新初始化(如 UART、SPI)。硬件定时器的精度影响系统时间修正,需校准时钟源(如 RTC 的时钟偏差)。)确认任务唤醒后调度正常。

2025-03-27 16:51:38 903

原创 软件定时器 API 函数详解

允许在指定时间间隔或单次触发后执行回调函数,由守护任务(Timer Task)统一管理。适用于周期性任务调度或延时操作,无需占用硬件定时器资源。以下是软件定时器相关 API 的全面讲解,涵盖动态/静态创建、启停控制及中断安全操作。通过合理使用软件定时器,可实现精准的周期性任务调度,优化系统资源分配。务必遵循回调函数的设计规范,确保系统的实时性和稳定性。FreeRTOS 的。

2025-03-27 11:40:11 264

原创 匈牙利命名法

ux: 无符号BaseType_t: 表示资源使用峰值xQueue: 队列句柄(类型为QueueHandle_t): void指针类型参数: TickType_t类型的等待时间。

2025-03-27 11:27:27 370

原创 软件定时器(Software Timer):概念、设计意义与应用实例

是 FreeRTOS 中一种基于系统节拍(Tick)的任务调度机制,允许开发者创建。中执行,其行为受以下配置影响(在。软件定时器的回调函数在独立的。,通过回调函数处理具体逻辑。

2025-03-27 11:01:14 415

原创 任务通知相关的 API 函数详解

是一种轻量级的高效通信机制,允许任务之间或中断直接向特定任务发送事件或数据。相比队列、信号量等传统机制,任务通知具有。通过合理使用任务通知,可以在资源受限或性能敏感的场景中显著提升效率,但需注意其适用边界,避免滥用导致代码可维护性下降。(无需额外创建对象),但功能相对受限(如仅支持单向通信)。以下是任务通知相关的 API 函数详解及使用指南。每个通知只能由一个任务接收,无法像队列一样广播给多个任务。需确保发送方持有正确的目标任务句柄(可通过。)不能在中断服务程序(ISR)中调用。任务通知的接收函数(如。

2025-03-26 17:11:19 729

原创 任务通知(Task Notification):概念、设计意义与应用实例

通过直接操作任务的内部状态实现同步和数据传递。是 FreeRTOS 中一种。

2025-03-26 16:46:21 382

原创 事件标志组相关的核心 API 函数

在 FreeRTOS 中,是一种用于任务间同步和事件管理的机制,允许任务等待多个事件的不同位组合(bitwise combinations)。

2025-03-26 16:26:25 728

原创 事件标志组(Event Group):概念、设计意义与应用实例

的形式管理多个事件状态。每个事件对应一个二进制位(bit),任务可以设置、等待或清除这些位,实现灵活的事件触发与响应。传统信号量或队列机制需为每个事件创建独立对象,导致。若仅需向单个任务发送事件标志,可优先使用。,其性能更高(无需创建事件组对象)。是 FreeRTOS 中用于。时,退出时会自动清除。

2025-03-26 16:20:02 798

原创 队列集相关的 API 函数详解

队列集是 FreeRTOS 中管理多事件的高效工具,通过集中监听多个队列或信号量,简化了复杂事件处理逻辑。合理使用队列集可以提升代码可维护性,但需注意事件容量和性能开销。

2025-03-26 11:46:53 513

原创 队列集xQueueSelectFromSet(), 如果同时,有两个队列触发,怎么办?先处理哪一个?

如果需明确区分事件优先级或记录多事件状态,可以使用。在 FreeRTOS 中,当使用。监听多个队列或信号量时,如果。在任务中处理完一个成员后,假设队列集包含两个队列。

2025-03-26 11:40:48 224

原创 队列集(Queue Set):概念、设计意义与应用实例

它允许任务同时监视多个通信对象(队列、二值信号量、计数信号量等),并在。一个监控任务需实时处理所有传感器数据、响应控制命令,并在报警时立即执行紧急操作。,任务阻塞在队列集上,任一对象触发时读取并处理对应事件。立即唤醒任务,从而简化多路事件处理的逻辑。若直接使用传统的多队列阻塞方式(如依次调用。是 FreeRTOS 中用于。

2025-03-26 11:24:32 512

原创 优先级继承并不能完全的消除优先级翻转的问题

优先级继承通过动态调整优先级,显著降低了单层资源竞争引发的优先级反转影响,但它并非“银弹”。在复杂的多资源竞争、嵌套锁、中断环境等场景下,仍需结合其他机制(如优先级天花板)和良好的系统设计,才能最大限度保障实时性。理解其局限性,是构建可靠嵌入式系统的关键。确实,优先级继承(Priority Inheritance)虽然能有效。的场景,而无法解决所有潜在的复杂情况。其核心原因在于,优先级继承仅能优化。优先级继承无法解决由。

2025-03-26 11:06:33 482

原创 FreeRTOS优先级翻转问题及解决方法

在 FreeRTOS 中,优先级翻转的典型诱因是低优先级任务占用资源时被中优先级任务抢占。通过使用互斥量(内置优先级继承)或设计时遵循实时系统原则(如优先级天花板、缩短临界区),可有效避免此问题。

2025-03-26 09:39:22 294

原创 递归互斥信号量相关的 API 函数详解

递归互斥量与普通互斥量共享优先级继承逻辑,当高优先级任务等待时,持有互斥量的任务(即使处于递归获取状态)会临时提升优先级。(获取多少次,就必须释放多少次)。以下是递归互斥信号量相关的 API 函数详解,包括动态和静态创建两种方式。若任务在递归获取后因逻辑错误未完全释放,会导致资源永久锁死。通过合理使用递归互斥量,可以简化嵌套资源访问的代码逻辑,避免因重复获取同一资源导致的死锁问题。FreeRTOS 中的递归互斥信号量(Recursive Mutex)是一种允许。的互斥量,专为解决任务需要。

2025-03-25 20:39:42 741

原创 互斥信号量相关的 API 函数详解

(Priority Inheritance),当高优先级任务因等待低优先级任务持有的互斥量而阻塞时,低优先级任务会临时继承高优先级任务的优先级。以下是互斥信号量相关的 API 函数详解,包括动态和静态创建两种方式。通过合理使用互斥信号量,可确保共享资源的安全访问,避免数据竞争和优先级反转问题。FreeRTOS 中的互斥信号量(Mutex Semaphore)是一种特殊的。,专为解决资源互斥访问和。

2025-03-25 20:36:37 500

原创 计数信号量相关的 API 函数详解

FreeRTOS 中的计数信号量(Counting Semaphore)用于管理多个资源的访问或事件计数,允许信号量的值在 0 到设定的最大值之间变化。以下是计数信号量相关的 API 函数详解,包括动态和静态创建两种方式。通过合理使用计数信号量,可以实现资源池管理、事件批量处理、流量控制等功能。

2025-03-25 20:32:18 511

原创 FreeRTOS信号量API函数介绍--专用和共用API函数

FreeRTOS中的四种信号量类型(二值信号量、计数信号量、互斥信号量、递归互斥信号量)各自具有专用和共用的API函数。通过合理选择信号量类型及对应的API,可高效实现任务同步、资源管理及临界区保护。:任务同步、简单互斥(非优先级继承)。初始化时信号量为空(不可用),需调用。需预先定义句柄,初始状态为可用。:资源互斥访问,支持优先级继承。:同一任务重复获取同一互斥量。:管理多资源池、事件计数。

2025-03-25 20:21:16 417

原创 二值信号量相关的 API 函数详解

FreeRTOS 中的二值信号量(Binary Semaphore)是一种用于任务间同步的核心机制,常用于任务与任务之间或任务与中断之间的简单事件通知。以下是二值信号量相关的 API 函数详解,包括动态创建和静态创建两种方式。通过灵活组合这些 API,可以实现任务同步、资源锁、中断与任务通信等功能。

2025-03-25 18:17:39 269

原创 FreeRTOS中信号量的三种用途给出的具体例子

假设有一个打印机资源,多个任务可能需要打印文档。为了防止多个任务同时访问打印机导致打印混乱,我们可以使用一个互斥信号量(Mutex)。这些例子展示了在FreeRTOS中如何使用信号量来处理不同的同步和互斥问题。通过信号量,可以有效地管理资源,确保任务的协调执行。假设有一个缓冲区可以存储最多10个数据包。我们可以使用一个计数信号量来跟踪当前缓冲区中可用空间的数量。假设有一个任务负责从网络接收数据,另一个任务负责处理这些数据。接收任务在接收到数据后需要通知处理任务。

2025-03-25 15:36:14 172

原创 FreeRTOS 中导致优先级翻转的机制及解决方案

在 FreeRTOS 中,共享资源由二值信号量。

2025-03-25 14:31:48 643

原创 二值信号量(Binary Semaphore):概念、设计意义与应用实例

二值信号量的核心价值轻量级的事件通知机制,实现中断与任务的高效解耦,适用于高频、单向事件触发场景。典型应用场景中断通知任务处理数据(如 UART 接收完成)。任务间简单事件同步(如启动阶段性操作)。替代裸机编程中的全局标志位,增强可维护性。设计选择若需传递数据或多次事件计数 → 使用队列(Queue)或计数信号量。若仅需通知事件发生 → 优先选择任务通知(性能更优)。

2025-03-25 12:18:49 669

原创 互斥信号量(Mutex):概念、设计意义与应用实例

互斥信号量(Mutex) 是 FreeRTOS 中用于保护共享资源的同步机制。其核心特性如下:在多任务系统中,多个任务可能同时操作共享资源(如 UART 发送数据、修改全局变量)。若不加保护,会导致 数据竞争(Data Race),引发不可预测的错误。早期的 FreeRTOS 使用二值信号量实现资源互斥,但存在致命问题:为解决优先级反转,FreeRTOS 引入互斥量:多个任务需通过 SPI 总线与不同外设通信(如读取传感器、写入显示屏)。冲突风险:若任务 A 正在操作 SPI,任务 B 抢占并发送数据,会

2025-03-25 11:54:56 643

原创 FreeRTOS 中的信号量:概念、类型与用法详解

二值信号量:单次事件通知(如中断触发)。计数信号量:多资源池管理(如内存块、连接池)。互斥量:保护临界资源(如硬件外设)。递归互斥量:允许同一任务多次获取同一锁。正确选择信号量类型可显著提升系统可靠性与效率,开发者需根据具体场景权衡设计。

2025-03-25 11:38:38 353

原创 队列创建-动态和静态方法

通过合理选择队列创建方式,可以在资源受限的嵌入式系统中实现高效、可靠的任务间通信。在FreeRTOS中,队列是实现任务间通信的核心机制。

2025-03-25 11:11:40 355

原创 在 FreeRTOS 中,队列可以传递值或指针

在 FreeRTOS 中,队列可以传递值或指针,具体取决于数据大小和场景需求。根据场景选择合适的方式,确保数据安全和效率!

2025-03-25 10:59:54 334

文件搜索工具,使用Python编写,然后压成一个.exe文件 该文件可以直接在Windows系统上运行

文件搜索工具,使用Python编写,然后压成一个.exe文件。该文件可以直接在Windows系统上运行。支持文件名称关键词搜索,即使文件名称输入不全也能搜索到。

2023-07-21

C++中引用(&)相关知识

C语言中的指针,和C++中的引用(&),在做函数形参的时候有很多相似的地方,为了方便查阅异同,截取了一部分关于引用的知识。

2023-07-17

用Python写的一个监控自己电脑各项参数的小程序

实时监控自己电脑的运行时间、使用率、内存使用率、CPU速度等参数,后期还可以扩展监控范围。

2023-07-15

python写的笔记本小程序

使用Chat gpt 通过发布命令写成的一个小程序。并且通过pyinstaller功能生成了.exe可执行文件。 后续会将源代码上传。

2023-07-14

空空如也

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

TA关注的人

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