Vim基础篇(三十一)——字符替换插件vim-clap
Vim基础篇(三十一)——字符替换插件vim-clap前言: 在linux下编程,终端最是常用的工具,将Vim和Terminal配合好使用将大大提高效率。 1 介绍 vim-clap 是一个强大的Vim插件,提供了多种功能,其中之一是字符替换功能。它允许用户在Vim中快速查找和替换文本,支持正则表达式和多文件操作,非常适合处理大量文本数据。 异步处理(Async) 所有搜索操作在后台异步执行,不会阻塞编辑器。 提供流畅的用户体验,即使在大型项目中也能快速响应。 无需外部依赖(可选) 默认使用 Vim 内置功能实现,无需安装 fzf、ripgrep 等外部工具。 可选集成 rg(ripgrep)、git 等工具以提升性能。 丰富的源(Providers) 支持多种查找模式,例如: Clap files:文件查找(支持 .gitignore) Clap git_files:Git 管理的文件 Clap grep:文本内容搜索(类似 :Ag) Clap buffers:打开的缓冲区切换 Clap marks:书签跳转 Clap...
OpenOCD基础篇(三)——擦除和读取
OpenOCD基础篇(三)——擦除和读取前言: 本篇文章介绍使用OpenOCD烧录和调试。 1 全片擦除 通过OpenOCD可以对MCU的Flash进行全片擦除,本文以STM32F103ZET6单片机为例,创建一个OpenOCD的脚本文件 jlink_swd_stm32f103_erase.cfg ,内容如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697# ============================================# STM32F103ZET6 全片擦除配置文件(J-Link + SWD)# 支持无 nSRST 连接情况#...
Vim基础篇(三十)——Debug插件vimspector
Vim基础篇(三十)——Debug插件vimspector前言: 在linux下编程,终端最是常用的工具,将Vim和Terminal配合好使用将大大提高效率。 1 介绍 vimspector 是一个为Vim和Neovim提供图形化调试功能的插件,它使得在Vim中进行代码调试变得更加直观和高效。vimspector支持多种编程语言(如Python、C/C++、JavaScript、Go、Java等),通过集成 Debug Adapter Protocol (DAP) 实现与各种调试器的通信。 多语言支持 : 借助 DAP 协议,vimspector 可以支持任何实现了对应 Debug Adapter 的语言,例如: Python(使用 debugpy ) C/C++/Rust(使用 lldb-vscode 或 gdb ) JavaScript/TypeScript(使用 vscode-node-debug2 ) Go(使用 delve ) Java、Ruby、PHP...
FreeRTOS基础篇(八)——高级调试功能
FreeRTOS基础篇(八)——高级调试功能前言: 在嵌入式开发中,系统的稳定性与性能优化离不开强大的调试支持。FreeRTOS 不仅是一个轻量级实时操作系统,还提供了一系列高级调试功能,帮助开发者深入洞察系统运行状态。从任务调度跟踪、CPU 使用率统计,到栈溢出检测与内存分配监控,结合 Tracealyzer 和 SystemView 等可视化工具,可大幅提升问题定位效率。本文介绍 FreeRTOS 的核心调试机制及其应用,助你打造更可靠、高效的嵌入式系统。 1 介绍 FreeRTOS提供了多种高级调试功能,帮助开发者在开发和优化嵌入式系统时定位问题、分析运行状态。主要包括: 可视化跟踪(Trace Facility):通过启用 configUSE_TRACE_FACILITY 和使用第三方工具(如 Tracealyzer 和 SystemView ),可记录任务调度、队列操作、内存分配等事件,生成时间轴视图,用于分析系统行为和性能瓶颈。 运行时统计(Runtime Stats):启用...
FreeRTOS基础篇(七)——事件组和任务通知
FreeRTOS基础篇(七)——事件组和任务通知前言: 在嵌入式实时系统中,任务间的同步与通信是构建复杂应用的核心。FreeRTOS 提供了多种机制来协调任务执行,其中事件组(Event Group)和任务通知(Task Notifications)因其高效性和灵活性被广泛使用。事件组适用于多事件的逻辑组合等待,而任务通知则是最快速的任务间通信方式,无需额外创建队列或信号量。本文通过实例详解两者的工作原理、API 使用场景及性能差异,帮助开发者在实际项目中做出更优选择,提升系统响应速度与资源利用率。 1 事件组(Event Group)1.1 介绍 事件组是一种允许一个或多个任务等待多个“事件”中某些或全部发生的同步机制。它使用一个24位(STM32上通常为23位可用)的位图来表示不同的事件标志(bit flags),每个bit可代表一个特定事件。 典型用途: 等待多个条件中的任意一个发生(如:按键按下 OR 定时器超时) 等待多个条件全部满足(如:网络连接 + 时间同步 + 配置加载完成) 1.2...
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连接芯片 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...







