FreeRTOS基础篇(六)——中断管理
FreeRTOS基础篇(六)——中断管理前言: 在实时操作系统中,中断是响应外部事件的核心机制,而如何安全、高效地处理中断,直接关系到系统的实时性与稳定性。FreeRTOS 通过精心设计的中断管理机制,实现了中断与任务间的协同工作,既保证了关键操作的及时响应,又避免了资源竞争与系统崩溃的风险。本文聚焦 FreeRTOS 在 Cortex-M 平台上的中断处理原理,深入解析 FromISR API、中断优先级配置、PendSV 调度机制等核心概念,帮助开发者正确编写中断服务程序,充分发挥 RTOS 的实时性能。 1 介绍 中断 是硬件或软件发出的信号,通知CPU暂停当前任务,去处理更紧急的事件(如定时器溢出、串口接收数据等)。处理中断的函数称为 中断服务程序(ISR, Interrupt Service Routine) 。中断处理应尽可能快,避免阻塞系统,因此中断内要处理的东西应该尽可能精简。 FreeRTOS对中断进行了优化,使其与任务调度协同工作。主要特点包括: 可屏蔽中断(Maskable...
FreeRTOS基础篇(五)——内存管理
FreeRTOS基础篇(五)——内存管理前言: 在嵌入式系统中,内存资源宝贵且有限,合理的内存管理对系统稳定性与实时性至关重要。FreeRTOS 通过提供多种可选的堆管理方案(heap_1 至 heap_5),让开发者能够根据应用场景灵活选择最合适的策略,兼顾效率、安全与碎片控制。本文系统介绍这五种内存管理方式的核心原理、适用场景及配置方法,帮助你深入理解 FreeRTOS 的内存机制,做出更优的设计决策。 1 介绍 FreeRTOS作为一个轻量级的实时操作系统(RTOS),在资源受限的嵌入式系统中广泛应用。由于其不依赖标准c库的动态内存管理(如 malloc / free),FreeRTOS提供了多种灵活且可配置的内存管理方案,以满足不同应用场景对性能、安全性和内存碎片的要求。 FreeRTOS不直接使用c标准库中的 malloc() 和 free(),而是提供了一套可移植、可配置的内存管理机制,以适应资源受限的嵌入式环境。其核心思想是:将一块静态定义的内存区域作为堆(heap),由...
FreeRTOS基础篇(三)——任务管理
FreeRTOS基础篇(三)——任务管理前言: 本文将系统性地讲解 FreeRTOS 中任务的创建、运行、状态转换以及阻塞与唤醒机制,帮助读者理解如何利用任务实现复杂的实时应用逻辑。通过实际代码示例,您将掌握任务的基本使用方式,并为后续学习队列、信号量、事件组等高级功能打下坚实基础。让我们从“任务”出发,逐步揭开 FreeRTOS 多任务并发的神秘面纱。 1 介绍 FreeRTOS的 任务管理 是其核心功能之一,具有轻量、高效、可移植性强等特点。主要具有以下特点。 多任务并发执行 FreeRTOS支持多任务并法执行(通过时间片轮转和优先级抢占实现),每个任务都是一个独立的函数,拥有自己的 栈空间 和 上下文 环境。值得解释下这里所说的栈空间是什么,它包含函数内部的局部变量、函数调用时的参数信息、函数调用后的返回地址,而上下文是指程序计数器(PC指针)、堆栈指针(SP)、通用寄存器(R0, R1,...
FreeRTOS基础篇(四)——时间管理
FreeRTOS基础篇(四)——时间管理前言: 本文简要介绍FreeRTOS中的时间管理机制,重点讲解系统节拍(SysTick)的工作原理、节拍计数器的使用以及任务延时函数的差异,帮助读者掌握如何在实际项目中实现精确的时间控制。 1 介绍 时间管理是实时操作系统(RTOS)的核心组成部分之一。在 FreeRTOS 中,时间管理主要依赖于一个周期性的硬件定时器中断——系统节拍(SysTick),它为整个系统提供时间基准,驱动任务调度、延时控制、超时判断等关键功能。 2 系统节拍(Tick) FreeRTOS使用一个固定的频率产生周期性中断,称为 系统节拍中断(Tick Interrupt),通常由处理器的SysTick定时器实现。每次中断发生时,FreeRTOS内核会调用 xTaskIncrementTick() 函数,递增一个全局计数器 xTickCount,这个计数器记录了自系统启动以来经过的节拍数。 默认节拍频率:1000Hz(即每 1ms 一次中断)。可配置范围:一般为10Hz ~...
OpenOCD基础篇(二)——烧录和调试
OpenOCD基础篇(二)——调试和烧录前言: 本篇文章介绍使用OpenOCD烧录和调试。 1 连接芯片 OpenOCD需要配置cfg文件才能连接芯片,cfg需要根据使用环境进行配置,以stm32f103ZET6通过J-Link,按照SWD接线方式连接芯片,以下给出 jlink_swd_stm32f103_connect.cfg 配置。 1234567891011121314151617# jlink-swd-f103.cfg# J-Link调试器配置source [find interface/jlink.cfg]# 选择SWD传输模式transport select swd# 适配器速度设置(可根据需要调整)adapter speed 4000# STM32F103ZET6目标芯片配置source [find target/stm32f1x.cfg]# 复位配置reset_config srst_only# 或者使用# reset_config...
OpenOCD基础篇(一)——安装
OpenOCD基础篇(一)——安装前言: 本篇文章介绍OpenOCD及安装。 1 介绍 OpenOCD的全称是Open On-Chip Debugger,即开源片上调试器。它是一个开源的、功能强大的软件工具,主要用来提供调试、芯片编程(刷写固件)和边界扫描测试功能,专门针对嵌入式系统。简单来说,OpenOCD 是一个“翻译官”和“桥梁”,它连接了你的电脑(PC)和嵌入式目标板(通常是基于 ARM、RISC-V、MIPS 等架构的微控制器)。 OpenOCD核心功能如下。 调试 片上调试 : 利用芯片内置的调试模块(如 ARM CoreSight、RISC-V Debug Module),实现无需额外仿真器就能进行源代码级别的调试。 支持GDB : OpenOCD可以作为GDB 服务器,这意味着你可以使用功能强大的GNU调试器 来单步执行、设置断点、查看变量和寄存器等。几乎所有主流的嵌入式开发环境(如Eclipse、VS...
CMake进阶篇(一)——搭建stm32工程
CMake进阶篇(一)——搭建stm32工程前言: 本篇文章探讨通过CMake搭建一个stm32工程。 1 下载 本篇文章以STM32F10x芯片为例搭建CMake工程,现在芯片长官网下载标准库,以主流HAL库为例。登陆 STM32官网 ,在官网搜索框中输入 STM32CubeF1 来查找并下载完整的MCU固件包。这个压缩包内就包含了STM32F103ZE以及整个F1系列所有芯片的HAL库源码、示例项目和文档。 解压下载的 stm32cubef1.zip 包,目录结构如下。 搭建工程所需的文件就在 **stm32cubef1.zip里,或者也可以通过STM32Cube创建一个CMake工程的Demo,从Demo中获取搭建工程所需要的文件。 1.1 获取drv HAL库和CMSIS在 Drivers/STM32F1xx_HAL_Driver 路径下,将其拷贝到我们搭建的工程中,这里我放到 drv 目录中使用。CMSIS(Cortex...
GitKraken破解 2025
GitKraken破解 2025前言: 新的GitKraken用之前老的破解办法已经失败了,这篇文章更新一种新的破解方法,破解最新的GitKraken。 1 下载 在 官网 下载最新的GitKraken版本,比如目前下载的是v11.6.0版本,选择自己需要的平台版本,比如我是在linux环境下则下载deb文件。执行以下指令安装。 1sudo dpkg -i gitkraken-amd64-v11.6.0.deb 由于原破解工具仓库被和谐了,我将工具上传到了百度云盘 分享 ,可以获取到破解工具并解压。 2 破解 破解工具依赖yarn,执行以下指令安装yarn。 1sudo npm install --global yarn &esmp;如果报错提示不支持npm指令,则还需要安装node.js,且版本要求 >= 12。执行以下指令安装node.js。 12sudo curl -sL https://deb.nodesource.com/setup_20.x |...
MIPI D-PHY介绍
MIPI D-PHY介绍前言: 本篇文章对MIPI D-PHY进行介绍。 1 什么是MIPI D-PHY MIPI D-PHY是由MIPI联盟制定的一种高速、低功耗、高性价比的物理层规范。您可以把它想象成“电子高速公路”,它定义了芯片之间进行通信时所用的电线、电气信号、时序规则和底层协议。 它最常用于移动设备(如智能手机、平板电脑),将应用处理器连接到摄像头和显示屏等外围设备。这就是为什么你经常听到“MIPI CSI-2”(用于摄像头)和“MIPI DSI”(用于显示屏)的原因——它们都是使用 D-PHY 作为其物理“运输工具”的更高层协议。 MIPI D-PHY的优势如下。 高带宽 : 支持高达 4.5 Gbps/lane 的数据速率(在 D-PHY v1.2 中),能够传输高分辨率视频和图像数据。 低功耗 : 这是其关键优势。它采用低摆幅差分信号,并且在不需要高速传输时可以切换到极低功耗的模式。 低电磁干扰 :...
SPAD激光接收器介绍
SPAD激光接收器介绍前言: 本篇文章对SPAD激光接收器进行介绍。 1 什么是SPAD SPAD,全称为Single Photon Avalanche Diode(单光子雪崩二极管),是一种高灵敏度的光电探测器件,能够在非常低的光照水平下检测单个光子。SPAD在工作时,当一个光子被探测器吸收后,能够触发一个雪崩效应,产生一个可以被检测到的电信号。 基本结构如下。 2 SPAD的工作原理 单光子雪崩二极管是单光子成像的关键核心器件,其本质为一个工作在反向偏压下的PN结,且工作电压高于击穿电压,处于盖格模式,I-V特性曲线如图1(a)所示,反偏PN结能带结构及电子-空穴对输运过程如图1(b)所示。其基本原理为:当耗尽区(倍增区)没有自由载流子并且反向偏压达到雪崩击穿要求的数值时,SPAD将处于稳态,器件耗尽区中会形成很强的电场,但是没有自由载流子发生电离,待入射光产生的光生载流子注入至耗尽区,在雪崩倍增效应下连续碰撞电离后产生雪崩信号。SPAD具有高灵敏度和高增益的特点。 3...









