- 博客(611)
- 收藏
- 关注
原创 FreeRTOS的任务优先级设计和实现原则
FreeRTOS的任务优先级是其调度器的核心机制,理解它对于构建稳定、高效的实时系统至关重要。任务优先级决定了在多个任务就绪时,哪一个任务优先获得CPU的执行权。FreeRTOS的任务优先级机制,其核心在于通过数值高低决定调度顺序,并结合抢占与时间片来实现复杂的调度策略。成功应用它的关键在于合理规划优先级层次、善用阻塞机制以及使用互斥量等机制避免优先级反转。
2026-01-22 10:11:03
15
原创 FreeRTOS 软件定时器的功能介绍和使用方法
软件定时器是 FreeRTOS 提供的一个非常重要且实用的组件,它允许你在应用程序中创建和管理多个基于系统节拍(tick)的定时器,而无需依赖硬件定时器外设。FreeRTOS 软件定时器是一个强大的后台时间管理工具,非常适合执行非精确的周期性任务(如状态监测、按键扫描、LED 指示、发送心跳包等)。它的核心思想是将定时事件的响应从硬件中断转移到一个专门的中等优先级任务中,使得应用程序设计更灵活、更安全(避免在 ISR 中处理复杂逻辑),但开发者必须清楚其运行机制和限制。
2026-01-22 10:09:03
14
原创 FreeRTOS队列的使用技巧: 传递指针
在FreeRTOS队列中传递指针是一项强大但需要谨慎使用的高级技巧。它能极大提升效率(避免大数据拷贝),但也将内存管理的责任从队列转移给了开发者。
2026-01-20 09:37:11
527
原创 FreeRTOS队列功能介绍
FreeRTOS的队列(Queue) 是任务间通信的核心,它本质上是一个线程安全的FIFO(先进先出)缓冲区,允许任务和中断服务程序以安全的方式传递数据或信号。FreeRTOS队列是一个功能强大、设计精巧的通信原语。它通过内置缓冲和阻塞唤醒机制,优雅地解决了任务间数据交换和同步的问题。在设计时,请根据数据特性和系统需求,权衡深度、数据项大小以及传递方式(拷贝或指针)。
2026-01-20 00:15:00
1134
原创 Python 获取当前目录的多种方法
在 Python 中,获取当前目录通常指的是两种不同的概念:当前工作目录(Current Working Directory)和当前脚本文件所在目录。下面详细介绍各种方法。
2026-01-19 09:25:26
191
原创 nRF54LM20B 芯片相关技术: Nordic端到端边缘AI方案
Nordic Semiconductor新推出的nRF54LM20B是一款专为电池供电物联网设备设计的、集成神经网络处理器(NPU)的超低功耗无线系统级芯片(SoC)。它代表了Nordic在边缘人工智能(Edge AI)领域的最新进展。
2026-01-16 15:46:11
616
原创 ESP-Drone: 乐鑫 ESP32/ESP32-S2/ESP32-S3 开发的小型无人机解决方案
ESP-Drone 是基于乐鑫 ESP32/ESP32-S2/ESP32-S3 开发的小型无人机解决方案,可使用手机 APP 或游戏手柄通过 Wi-Fi 网络进行连接和控制。该方案硬件结构简单,代码架构清晰,支持功能扩展,可用于 STEAM 教育等领域。
2026-01-15 00:15:00
631
原创 BLE协议栈GATT: 特征(Characteristic)
GATT的特征值是BLE通信中实际承载数据的最小单元。理解它需要区分两个层面:狭义的“特征值”:指特征对象内部的那个具体的数据字节数组。广义的“特征”:作为一个完整的协议数据结构,它包含这个值以及描述它的元数据。在实际开发中,我们几乎总是在操作后者,即整个“特征(Characteristic)”对象。
2026-01-14 02:45:00
1019
原创 BLE协议栈GATT服务器详细介绍
GATT服务器是蓝牙低功耗(BLE)通信中的核心数据提供方,简单理解,它是一个包含结构化数据的数据库。当两个BLE设备连接后,扮演GATT服务器角色的设备负责存储并向客户端(Client)提供数据。
2026-01-14 02:30:00
759
原创 BLE(蓝牙低功耗)协议栈的详细介绍
本文主要关于BLE(蓝牙低功耗)协议栈的全面详细介绍。笔者将采用自底向上的方式,逐层解析其架构、功能和交互,并突出其与经典蓝牙的关键区别。理解各层的职责及其协同工作方式,对于进行高效的BLE应用开发、调试和问题分析至关重要。对于应用开发者,重点在GATT/GAP;对于驱动或协议栈开发者,则需要深入理解链路层和ATT/L2CAP的交互。
2026-01-13 09:39:34
933
原创 BLE 协议栈中的 L2CAP层详解
L2CAP的全称是逻辑链路控制与适配协议。为上层ATT/GATT提供了稳定可靠的数据传输管道。理解L2CAP是深入理解BLE数据流和协议栈交互的关键一步。
2026-01-13 09:32:30
719
原创 Zephyr RTOS中sys_cpu_to_le16函数意义和用法
sys_cpu_to_le16 是 Zephyr 内核提供的 字节序转换函数,核心用于解决跨设备(不同 CPU 架构)数据传输的字节序一致性问题 —— 蓝牙协议(GATT/ATT 层)强制要求多字节数据使用 小端字节序(LE) 传输,而不同 CPU 的本机字节序可能为大端(BE)或小端(LE),需通过该函数统一格式。
2026-01-12 09:23:24
782
原创 STM32 IO接口推挽输出 (PP)和开漏输出 (OD)
本文主要介绍STM32 IO接口推挽输出 (PP)和开漏输出 (OD)的原理和应用方法。推挽输出是STM32最常用、驱动能力最强的输出模式。它的核心在于内部有两个MOS管,可以主动、强有力地将引脚驱动到高电平(VDD)或低电平(VSS),如同一个“推-拉”组合。开漏输出(Open-Drain, OD)是一种只能主动拉低,无法主动推高的输出模式。它的输出端如同一个接地的“漏极”开关,只能打开(输出低)或关闭(高阻态),高电平需要依赖外部上拉电阻提供。
2026-01-12 09:21:31
915
原创 Zephyr RTOS函数k_work_reschedule_for_queue和k_work_schedule_for_queue介绍
Zephyr RTOS 的工作队列,并在指定的延迟后执行,或者在未来的一个绝对时间点执行。可使用函数k_work_reschedule_for_queue ,它是 k_work_schedule_for_queue 的衍生版本,增加了“如果该工作项已在队列中等待,则重新计算其触发时间”的能力。本文主要介绍这两个函数的功能和使用方法。
2026-01-08 00:15:00
972
原创 Zephyr RTOS 中k_pipe_init 函数的介绍和基本用法
在 Zephyr RTOS 中,k_pipe_init 函数用于在运行时动态初始化一个管道。管道是一种用于在线程间传递字节流数据的进程间通信机制,与传递固定大小“消息块”的k_msgq形成互补。通过k_pipe_init动态初始化管道,可以在内存受限的嵌入式系统中实现对字节流数据的灵活、高效管理。它是构建串口网关、数据记录器或任何流处理应用的基石。
2026-01-08 00:15:00
917
原创 Zephyr RTOS 中k_msgq_init初始化函数的使用方法
在 Zephyr RTOS 中,k_msgq_init 是用于在运行时动态初始化一个消息队列的核心函数。它与编译时静态初始化宏 K_MSGQ_DEFINE 相对应,为你提供了更灵活的消息队列创建方式。
2026-01-06 00:30:00
860
原创 Zephyr RTOS 中k_msgq_set和k_msgq_get函数
在 Zephyr RTOS 中,k_msgq_put 函数是消息队列的核心操作之一,用于将一条消息放入(发送到)指定的消息队列中。它是实现线程间、中断与线程间安全数据通信的“生产者”角色。k_msgq_get 是消息队列 (k_msgq) 的核心接收函数。它的作用是从一个已初始化的消息队列中获取(取出)一条消息,并将其复制到你提供的缓冲区。
2026-01-06 00:15:00
1470
原创 Zephyr RTOS中k_pipe相关函数介绍
在 Zephyr RTOS 中,k_pipe 相关函数提供了一种面向字节流的线程间通信机制。与传递固定大小消息块的消息队列不同,管道专注于传输连续字节流,非常适合处理串口数据、网络数据包等场景。
2026-01-06 00:15:00
770
原创 Zephyr RTOS 原子操作(atomic)相关函数
在 Zephyr RTOS 中,atomic 相关函数提供了一套用于对 atomic_t 类型变量执行原子操作的 API,这是在多线程、中断与多核环境中实现安全、无锁数据共享的基础。本文主要将它们按功能分类,并解释其核心用途。重点介绍atomic_set和atomic_get函数的使用方法。
2026-01-05 00:30:00
1729
原创 Zephyr RTOS中信号量函数 k_sem_take () 深度探究
本文深入探讨了 Zephyr 的 k_sem_take () 函数的各个方面,从信号量的本质到具体的使用方法,从理论基础到实践应用,从正常流程到错误处理。建立起对 k_sem_take () 函数的全面而深入的理解,在实际项目中能够正确、高效地使用这一重要的同步原语。
2026-01-05 00:15:00
923
原创 蜕变后的重生-我的2025年度总结
这是第二次参与CSDN博客之星评选活动,并有幸两次被评选为年度创作影响力 TOP 300 博主,所以,今年也是我第二次在CSDN上发表我的年终总结。我自2018年起已经注册CSDN的账号,对于CSDN用户来说,我已经是一位老用户了,但说来惭愧,在过去的6年时间里,博客输出为0。直到2014年一月份开始博客创作。对博客创作来说,我只能算作一个新人。本文主要对2025年度的个人技术成长做系统的总结。
2025-12-31 23:49:30
788
原创 基于GD32的直流无刷电机控制算法实现和验证
如果要问当下那个行业最火,当属人形机器人行业。而机器人最核心的执行设备为关节,控制关节的动力来源一般为电机,而直流无刷电机控制需要专门的控制电路和软件控制算法,以实现其精确的位置,速度控制。本项目主要是基于 GD32F527I-EVAL开发板,应用RT-Thread软件操作系统,设计一套直流无刷电机的控制算法,实现闭环速度、位置等功能的控制和参数验证。
2025-12-25 20:33:56
1064
原创 Nordic典型芯片nRF5340的功能介绍
本文介绍了Nordic公司的无线SoC芯片:nRF5340采用双Cortex-M33架构,支持蓝牙5.4等协议,具备更高的安全性能该芯片均具备多协议支持、低功耗特性,并针对物联网应用提供不同级别的安全方案,适用于从可穿戴设备到智能家居等多种场景。
2025-12-25 15:27:01
986
原创 Zephyr RTOS 工作队列函数(k_work_reschedule )的应用方法介绍
k_work_reschedule 函数在 Zephyr RTOS 中用于重新安排延迟工作项(delayed work)的执行时间。该函数在需要动态调整定时任务时非常有用,特别是在实现防抖、超时重试、周期性任务等场景。本文详细介绍其用法。
2025-12-19 09:39:54
456
原创 Zephyr OS BLE NUS Client 功能实现
在Zephyr OS中实现BLE NUS Client功能,意味着你的设备将作为中心设备,主动去连接一个提供NUS服务的设备,并与之进行双向数据通信(类似虚拟串口)。本文主要梳理其核心机制、实现流程、代码结构和关键配置。
2025-12-12 17:55:51
656
原创 蓝牙测向原理介绍: AoA与AoD
本文主要介绍蓝牙测向原理AoA与AoD,蓝牙测向是一项基于蓝牙5.1核心规范引入的革命性技术,它使蓝牙设备能够确定无线电信号的传播方向,从而实现了比传统基于信号强度的定位方式更精准、更可靠的定位和位置追踪。
2025-12-03 00:15:00
847
原创 蓝牙Mesh协议介绍
本文主要介绍蓝牙Mesh协议 。它不仅仅是传统蓝牙的简单延伸,而是一套全新的、专为大规模设备网络设计的通信标准。蓝牙Mesh 是蓝牙技术联盟为填补大规模、低功耗设备组网空白而推出的重要协议。它巧妙地将低功耗蓝牙的广播特性转化为网状网络的基石,通过消息洪泛、分层安全和功能模型,为智能楼宇和家居提供了稳定、安全、可互操作的解决方案。尽管在实时性和功耗上有一定权衡,但其与生俱来的手机友好性和强大的生态系统使其在市场上占据了重要地位。
2025-12-02 11:37:27
862
原创 新一代无线 SoC(nRF54系列)的特性
nRF54L 系列将广受欢迎的 nRF52 系列提升到新的水平,专为下一代蓝牙 LE 产品而设计。它集成了新型超低功耗 2.4 GHz 无线电和多用途 MCU 功能,采用 128 MHz Arm Cortex-M33 处理器,处理能力翻倍,处理效率提高两倍。nRF54L 系列中的三款无线 SoC 提供多种内存大小选择,最大 1.5 MB NVM,最大 256 KB RAM,适用于各种蓝牙 LE 应用。
2025-12-02 11:15:03
853
原创 Nordic 3款典型芯片(nRF52840、nRF5340和nRF54L15)的特性介绍
本文介绍了Nordic公司的三款无线SoC芯片:nRF52840、nRF5340和nRF54L15。nRF52840是nRF52系列的高端产品,支持多协议并发,具有Arm Cortex-M4内核和CryptoCell加密单元。nRF5340采用双Cortex-M33架构,支持蓝牙5.4等协议,具备更高的安全性能。最新nRF54L15基于22nm工艺,性能提升3倍,支持蓝牙6.0、Matter等新协议,并集成RISC-V协处理器。三款芯片均具备多协议支持、低功耗特性,并针对物联网应用提供不同级别的安全方
2025-12-01 00:30:00
1098
原创 USB协议的软件架构
本文主要介绍USB协议的软件架构,如果说硬件是“身体”,协议是“神经”,那么软件架构就是“大脑”。它定义了操作系统、驱动程序和应用程序如何协同工作,来识别、管理和使用USB设备。USB的软件架构是一个标准化的、分层的驱动模型,其核心目标是:实现设备驱动的自动化和动态加载(即插即用),并向应用程序提供统一、简单的访问接口。
2025-11-27 00:15:00
1025
原创 USB传输协议介绍
本文主要介绍USB的传输协议,如果说硬件是USB系统的“身体”,那么传输协议就是其“灵魂”和“神经系统”,它规定了数据如何被组织、打包、发送、接收和确认,从而确保通信的有序和可靠。USB协议是一个复杂的体系,其核心思想是主机主导的、轮询式的、基于事务的通信。
2025-11-26 00:45:00
1931
原创 USB技术硬件实现原理和版本演进历史
本文主要介绍USB技术实现原理,USB的硬件实现原理是一个从物理层到协议层的完整体系。还介绍了USB各个版本的演进历史,及其技术进步要点。USB(Universal Serial Bus,通用串行总线)1.x和2.0是计算机外设连接技术的重大突破,它们彻底改变了PC与外部设备的连接方式。
2025-11-26 00:15:00
1826
原创 Python struct.pack 用法总结
struct.pack 是 Python 中用于将数据打包成字节流的强大工具,特别适用于处理二进制数据、网络协议、文件格式等场景。通过掌握 struct.pack,可以高效地在 Python 中处理各种二进制数据场景。
2025-11-25 15:02:08
930
原创 场效应管(MOSFET )介绍和特性分析
本文主要介绍场效应管的工作原理、应用方法以及核心的数学推导。并使用Python工具模拟MOSFET 的工作特性。
2025-11-25 13:43:32
1856
原创 C语言标准演进时间线和特性介绍
C语言从1989年的第一个标准化版本到2017年的最新标准(截至2023年)的演进历程的详细梳理。其进化之路分为几个关键阶段,并阐述每个阶段的核心目标和引入的重要特性。
2025-11-19 13:59:36
791
原创 使用scipy.signal.firwin 设计滤波器
本文主要介绍使用scipy.signal.firwin设计FIR滤波器。firwin函数使用窗函数法设计线性相位的FIR滤波器。
2025-11-17 00:30:00
401
原创 scipy.signal.firwin2 用法详解
本文主要介绍scipy.signal.firwin2 用法详解, 其提供了极大的灵活性,可以设计几乎任何你能想象到的频率响应形状,是数字信号处理中非常有用的工具。
2025-11-17 00:15:00
1541
原创 MPU6050陀螺仪数据处理方法
本文主要介绍MPU6050陀螺仪数据处理方法。MPU6050 是一款非常经典且广泛使用的 6 轴 IMU(惯性测量单元),它集成了三轴陀螺仪和三轴加速度计。处理其数据以获得稳定、可靠的姿态信息是嵌入式系统和机器人领域的一个常见任务。
2025-11-12 00:15:00
1579
原创 电磁波传播理论的数学描述和python模拟
电磁波传播理论的数学原理深邃而优美,其核心是麦克斯韦方程组。一切电磁现象的起点都是这组由詹姆斯·克拉克·麦克斯韦在19世纪总结的四个方程。它们描述了电场 (E) 和磁场 (B) 是如何由电荷和电流产生,以及它们之间如何相互作用的。本文介绍电磁波传播的基本理论,并提供相应的Python实现。
2025-11-11 09:20:25
990
将lvgl源代码转换为.lib(stm32-f407-lvgl-lib-proj)
2024-06-21
应用lvgl的.lib 的一个范例(stm32-f407-lvgl-lib-ui-proj)
2024-06-21
通用性I2C接口的应用之驱动SHT20(N32G45XVL-STB)
2024-06-19
STM32F407之移植LVGL(8.4.0)-UI
2024-06-18
lvgl-demo-MusicPlayer
2024-06-18
stm32-f407-lcd-lvgl-proj-MusicPlayer
2024-06-18
STM32F407之移植LVGL(8.4.0stm32-f407-lcd-lvgl-proj)
2024-06-18
VMware-workstation-full-15.5.6-16341506
2024-06-15
和lvgl UI开发仿真相关的软件
2024-06-15
N32G45XVL-STB之移植LVGL(lvgl-8.2.0)
2024-06-08
使用PID算法实现DAC模拟量输出的快速调节
2024-05-30
stm32-f103-rct6-motor-speed
2024-05-29
PID算法在电机速度控制上的应-测试源码
2024-05-28
STM32高级控制定时器(STM32F103):PWM 输入模式
2024-05-25
stm32-f103-rct6-输入捕获测试代码
2024-05-25
stm32-f407-bmp085-proj
2024-05-21
stm32-f407-fsmc-sRAM
2024-05-16
stm32-f407-lcd-ft6336-proj
2024-05-12
基于STM32移植lvgl(V8.2)(SPI接口的LCD)
2024-05-10
env-windows-v2.0.0-venv RT-Thread 开发环境
2025-10-26
mp6050-dmp-motion-driver-6.12
2025-08-27
nrf52-development-kit-nRF52832-DK-BOARD, 包括原理图,PCB等相关设计资料
2025-06-08
直流无刷电机控制(FOC):速度闭环模式 直流无刷电机控制(FOC):电流模式 直流无刷电机控制(FOC):位置模式
2025-01-09
基于野火Renesas R7FA8D1BH (Cortex-M85)开发板,设计的一款智能控制小车
2024-10-10
RT-Thread Nano版本在STM32F103RB上的快速移植
2024-09-09
RT-Thread(Nano版本)的快速移植(基于NUCLEO-F446RE)
2024-09-07
Renesa Version Board开发RT-Thread 之UART驱动应用
2024-08-25
NUCLEO-F446RE: STM32F446RE实现多通道ADC转换功能实现(DMA)
2024-07-06
STM32F103RB多通道ADC转换功能实现(DMA)
2024-07-05
FSP-Project-RA8-adc-oled:Renesas R7FA8D1BH (Cortex-M85) 的综合应用
2024-07-01
FSP-Project-RA8-uart-test:Renesas R7FA8D1BH (Cortex-M85)串口应用总结
2024-06-29
FSP-Project-RA8-test:搭建瑞萨R7FA8D1BHECBD-BTB的开发调试环境(DAP-LINK: N32G
2024-06-28
W25QXX-STM32F4-ALY:设计NOR Flash(SPI接口)的Flashloader(MCU: stm32f4)
2024-06-28
M29W128GL-STM32F4-ALY 源代码
2024-06-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅