自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于 Python 的 ADS 自动化仿真框架与 API 使用指南

本文系统介绍 ADS 自动化仿真工具库的设计思想和使用方法。通过 ParameterUpdater 把“如何修改电路参数”与仿真流程解耦,由 AutoSimulator 负责工作空间配置、样本读取、批量运行仿真以及从 ADS Dataset 中提取目标变量。文中给出参数文件格式、结果写回 JSON 的数据结构和自定义 result_processor 回调示例,说明如何实现断点续传、异常隔离和结果对齐,为基于 Python 的大规模电路仿真与模型训练提供通用框架。

2025-12-11 11:08:28 954 3

原创 ADS .ds 数据集结构与Python访问实践 ADS的python程控

本文系统介绍了 ADS 仿真生成的 .ds 数据集文件结构及其在 Python 中的访问方式。首先从文件层面解析 .ds 的物理组织,包括文件头、变量块索引和数据块,并结合示例展示典型仿真数据内容。随后对 Dataset、VariableBlock、Variable 等对象层级进行说明,阐明独立变量与依赖变量、属性与数据矩阵之间的关系。文章给出了多种访问模式和代码示例,如遍历变量块、按变量名搜索、转换为 Pandas DataFrame,以及针对频率、S 参数和测量结果的高效提取封装。

2025-12-11 11:05:14 546

原创 RV1126开发板烧录与SSH登录实践

本文以 RV1126 开发板为例,记录从只能进入 MASKROM 救砖状态,到成功通过光纤以 SSH 方式远程登录的完整实践过程。内容包括使用瑞芯微 AndroidTool 刷写 update.img,梳理 MASKROM、LOADER、ADB、MSC 等设备状态及“切换”规则,说明在何种状态下才能烧录固件或读取 Chip/Flash 信息。随后通过 adb shell 进入系统,配置 eth0 的静态 IP,并在 Windows 侧为有线网卡设置同网段地址,避免路由干扰,最终实现稳定的 SSH 登录。

2025-12-04 22:35:03 805

原创 在 VSCode 中通过 Python 程控 ADS 软件:从环境变量到一键调试

本文记录了我在 Keysight ADS 2026 环境下,使用 VS Code 搭建 Python 程控开发环境的完整过程。首先介绍如何正确设置 HPEESOF_DIR 环境变量,并基于 ADS 自带解释器创建带 --system-site-packages 的虚拟环境,使 EDA 平台与通用 Python 生态打通。随后说明通过 .pth 文件将 ADS 本地包目录和项目根目录加入 site-packages,解决 keysight.ads 等内部库及自定义 utils 包的导入问题,并给出 Bash

2025-11-27 15:56:38 555 2

原创 RV1126 SPI NAND 镜像制作 分区布局 刷机实战全解析

本文以 RV1126 SPI NAND 平台为例,梳理 rockdev 目录中各类镜像(Loader、U‑Boot、boot、rootfs、recovery、misc、update.img)的作用,详细解读 parameter.txt / mtdparts 的分区布局及其与启动链路、rootfs、recovery、userdata 等分区的对应关系,并串起 envsetup.sh 与 ./build.sh lunch、firmware、updateimg 的构建流程,最后通过修改 recovery 分区

2025-11-27 02:07:37 991

原创 混频器原理与典型电路

混频器通过非线性或时变实现频率变换,将射频信号与本振信号混频得到中频。主要分为两类:非线性型利用器件的弱非线性特性,将电流-电压关系展开为多项式,通过二阶交调项产生目标频率分量,典型实现如90°移相平衡二极管混频器,利用90°混合网络使目标差频项同相叠加,同时抑制RF/LO直通和偶次失真;开关型混频器则利用大信号本振驱动器件在导通/截止状态间切换,等效为周期性电导对射频信号进行调制,典型实现如Gilbert有源混频器,通过跨导级和开关级的组合实现双平衡混频。

2025-11-24 18:12:08 1051

原创 深入解析TCP:三次握手、四次挥手与完整状态机

本文是对TCP连接管理核心机制的深度剖析。文章首先通过通俗易懂的类比和详细的Mermaid流程图,分步讲解了三次握手的完整过程(SYN, SYN-ACK, ACK),阐明了其同步序列号、确保双向通信能力正常的根本目的,并深入探讨了为何“三次”是保证可靠性的最少步骤。接着,文章以同样的方式剖析了四次挥手的半关闭(Half-Close)机制,详细解释了FIN_WAIT、CLOSE_WAIT和TIME_WAIT等关键状态,特别是TIME_WAIT状态等待2MSL的两个核心原因。最后,文章提供了一个完整的TCP状态

2025-11-04 00:46:12 1631

原创 Linux网络编程核心实践:TCP/UDP socket与epoll高并发服务器构建

本篇博文是Linux网络编程的全面深度指南,带领读者从零开始构建一个完整、坚实的知识体系。文章分为三大板块:首先,基础理论篇系统地梳理了TCP/IP五层模型,通过命令行工具验证了从数据链路层到应用层的核心协议(ARP, IP, TCP/UDP)与数据封装过程;其次,实战编程篇详细讲解了socket编程的核心API,通过编写TCP和UDP的回射服务器,让读者亲手实践连接建立、数据交换和地址管理的完整流程,并最终通过一个epoll版的TCP服务器实战,展示了如何构建高并发网络应用。本文是理论与实践紧密结合的典范

2025-11-03 22:54:49 917

原创 Linux线程全解析:生命周期、同步原语(锁、条件变量、信号量)与线程池实现 从Pthreads基础到高级同步与线程池实战

本文是Linux多线程编程的全面深度指南。文章从线程基础与生命周期管理入手,讲解了线程的创建、回收与取消机制。核心部分详细剖析了五大同步原语:解决竞争条件的互斥锁、实现等待/通知的条件变量、优化的读写锁、用于多方同步的屏障以及经典的POSIX信号量,并探讨了死锁的成因与避免。最终,文章以一个模块化的线程池项目收尾,将所有理论知识应用于综合实战。全文贯穿理论、API解析与编程练习,是掌握Linux并发编程的宝贵参考

2025-10-24 02:40:30 415

原创 详解Linux进程间通信(IPC):管道、共享内存与信号量的原理与实战

本文是Linux进程间通信(IPC)的全面指南。文章系统地介绍了多种核心通信方式:首先讲解了经典的管道(匿名与命名FIFO);接着深入探讨了System V IPC三大组件——用于结构化传递的消息队列、最高效的共享内存,以及用于同步的信号量;最后介绍了作为异步通知机制的信号(Signal)。本文为每种机制都提供了核心原理、系统调用、命令行验证和C语言编程实例,并附有清晰的对比总结,旨在帮助开发者彻底掌握不同场景下IPC技术的选择与应用。

2025-10-19 02:31:25 1141

原创 Linux进程基础教学:深入解析 task_struct、/proc 文件系统与多进程编程

本文从内核视角深入剖析Linux进程。首先详细讲解了作为进程控制块(PCB)的 task_struct 结构体,涵盖状态、亲缘、调度、内存、文件与权限等核心成员。接着,文章揭示了 /proc 伪文件系统的奥秘,展示了如何通过它实时监控系统。最后,文章落脚于多进程编程实践,通过丰富的代码示例系统讲解了 fork(), exec(), wait() 和 kill() 等核心函数,并以一个带超时的任务监视器项目收尾,帮助读者将理论融会贯通

2025-10-15 01:56:21 373

原创 深入Linux文件编程:从底层I/O、标准I/O到静态与动态库

本篇博文是Linux C语言应用开发的入门基石,全面深入地探讨了Linux下文件操作的核心知识。文章从“一切皆为文件”的思想出发,系统地分为三大板块:首先,详细解析了基于文件描述符的底层文件I/O(如 open, read, write),阐述其作为系统调用的直接性;其次,对比讲解了基于 FILE* 指针的带缓冲的标准I/O(如 fopen, fread, fprintf),分析其缓冲策略与性能优势;最后,延伸至C语言程序构建的核心概念——库,详细介绍了静态库(.a)和动态库(.so)的原理、创建、使用方法

2025-10-13 00:43:57 373

原创 如何读懂一款高频放大器的数据手册:以 LMH6881 为例 射频/模拟器件选型

本文通过对 TI 公司的 LMH6881 差分可变增益放大器的数据手册进行分析,系统性介绍了如何理解射频/模拟器件中的关键性能指标,包括带宽、压缩点(P1dB)、线性度(OIP3/IIP3)、谐波失真(HD2/HD3)等。文章重点不是介绍器件本身,而是教会读者如何通过查阅典型特性图和性能参数,判断器件是否符合目标系统要求,从而提升元器件选型和电路设计的工程能力。适用于射频通信、信号链设计和高频模拟电子学习者。

2025-07-19 16:28:42 1178

原创 ADS学习笔记(四) S参数仿真

本文详细分析了射频放大电路中各关键元器件的作用,包括偏置电阻、隔直电容和射频扼流电感。通过仿真对比,验证了射频扼流电感能有效提升信号增益(从8.210增至8.494),同时不会影响阻抗匹配。文中还结合史密斯圆图解读了2.4GHz时的S11参数(0.345∠-84.888°),指出此时输入阻抗为(41.65-j32.5)Ω。该分析为射频电路设计提供了元器件选型依据和参数优化方法。实验方法详见参考书籍3.5章节。

2025-05-26 21:06:42 2083

原创 ADS学习笔记(五) 谐波平衡仿真

本文通过三阶交调点坐标系图的斜率分析,解释了基波输出功率(斜率1)和三阶交调产物功率(斜率3)的变化规律,指出其交点即为理论上的三阶截取点(IP3),用于评估器件线性度。同时详细解析了ADS软件中ip3_out函数的参数含义和工作原理,该函数通过提取基波和交调产物的输出功率计算OIP3值。最后结合频谱图数据,展示了如何根据基波和交调产物的实测功率值来计算输出三阶截取点(OIP3),为射频电路的线性度分析提供了实用方法。

2025-05-26 21:06:30 2427

原创 ADS学习笔记(三) 瞬态仿真

本文分析了BJT电路中交流信号仿真与瞬态仿真放大倍数不一致的问题(3.422 vs 3.1)。主要原因是两种仿真方法的本质差异:交流仿真采用线性化小信号模型,而瞬态仿真使用完整非线性模型,10mV输入信号已使BJT表现出非线性特性,导致增益压缩。通过减小瞬态仿真输入信号幅度(如1mV),可观察到增益逐渐接近交流仿真值,验证非线性效应是差异根源。文中附图展示了仿真电路和结果波形。

2025-05-25 21:00:42 2441

原创 ADS学习笔记(二) 交流小信号仿真

摘要:反馈放大器稳定性分析中,相位裕度(PM)是关键指标。PM定义为0dB增益频率点时环路增益相位与-180°的差值。当PM≥60°时,放大器能稳定工作,原因包括:1)提供足够稳定性余量,应对元件参数变化;2)获得良好瞬态响应特性(适度阻尼,减少过冲和振铃);3)符合工程实践经验,确保系统鲁棒性。该条件在交流仿真中可通过观察增益和相位曲线验证。

2025-05-25 20:55:37 1140

转载 ADS仿真笔记(一) BJT直流仿真分析:模型参数、结果差异与厄尔利效应详解 ADS2020

本文详细介绍了在ADS (Advanced Design System) 中进行BJT(双极结型晶体管)直流仿真的方法与关键点。首先概述了直流仿真在电路分析中的基础地位,并分别演示了基于模板和自定义控件两种方式搭建BJT直流特性(如Ic-Vce曲线)仿真电路的详细步骤,包括模型创建、参数设置及符号生成。接着,文章重点分析了仿真结果中实际电流增益Beta (hFE) 与模型设定值 (Bf) 之间常见差异的原因,指出这不仅与工作点(Ic, Vce)有关,更与厄尔利效应密切相关。最后,对厄尔利效应进行详细说明

2025-05-24 16:24:29 2514

原创 嵌入式系统中WAV音频文件格式详解与处理实践

本文全面介绍WAV音频文件格式及其在嵌入式系统中的应用实践。首先详细剖析了WAV格式的基础架构,包括RIFF文件结构和各类块(Chunks)的组成与功能,尤其是关键的fmt块和data块。文中深入解析了WAV文件的字节结构、采样表示方法以及多声道数据的存储机制。通过实用的C语言代码示例,展示了如何在资源受限的嵌入式平台上高效解析WAV文件头并处理音频数据。此外,文章总结了嵌入式系统处理WAV的完整流程,涵盖从外设初始化、文件解析、音频参数匹配到数据读取与播放的各个环节。针对常见问题如格式转换、内存管理和错误

2025-05-14 15:33:13 1485

原创 JSON 和 cJSON 库入门教程

首先,文章解释了 JSON 是一种轻量级、易于人类阅读和机器解析的数据交换格式。它基于 JavaScript 的一个子集,但独立于语言,由对象(无序键值对,用花括号 {} 包裹)和数组(有序值集合,用方括号 [] 包裹)组成。JSON 支持字符串、数字、布尔值 (true/false)、null、对象和数组等数据类型。接着,文章重点介绍了 cJSON,一个用标准 ANSI C 编写的超轻量级 JSON 解析器和生成器,非常适合 ESP32 等资源受限的系统。

2025-05-13 15:34:28 1018

原创 C 调用 C++:extern “C” 接口详解与实践 C/C++混合编译

本文阐述了如何在 C 语言中调用 C++ 代码,特别是面向对象的功能。核心挑战在于 C++ 的名称修饰和 C 语言缺乏类概念。解决方案是利用 C++ 的 extern "C" 关键字创建具有 C 链接规范(无名称修饰、C 调用约定)的接口函数.

2025-04-27 14:42:18 1273

原创 I²S协议概述与信号线说明

I²S协议(Inter-IC Sound)是飞利浦提出的用于数字音频数据传输的串行总线标准,常用于微控制器、音频编解码器和数模转换器之间的数据交换。I²S协议包括位时钟(BCLK)、字选择时钟(LRCK/WS)和数据输入输出(DIN/DOUT)等信号线。协议支持双声道音频数据传输,通过BCLK同步数据传输,LRCK指示左右声道,DIN/DOUT传输实际音频数据。常见的工作模式包括标准I²S、左对齐(Left-Justified)和右对齐(Right-Justified),每种模式对数据的对齐和时钟的关系有所

2025-04-07 21:54:56 1644 2

原创 深入理解 Xtensa 架构 ESP32 内存架构(SRAM、IRAM、IROM、DRAM、DROM详解)

本文详细解析了ESP32芯片的内存架构,详细介绍了SRAM、IRAM、IROM、DRAM、DROM之间的关系、作用与区别。具体讲解了IRAM与IROM的执行效率差异及如何通过 IRAM_ATTR 提升代码执行速度,也明确了DRAM与DROM的数据存放机制,给出了节约RAM的方法。文章包含示例代码、应用场景及清晰的内存结构图,帮助读者深入理解ESP32开发过程中如何有效利用内存资源。

2025-03-15 22:39:48 3148

原创 vscode 下的 esp-idf 快速搭建指南(超详细) 头文件包含问题的解决

本文详细介绍了如何使用ESP-IDF工具安装器,快速搭建ESP-IDF与VSCode集成开发环境。包括ESP-IDF工具安装器的离线安装步骤,Python环境的正确配置方法,以及VSCode ESP-IDF插件的高级(ADVANCED)配置过程。文章特别强调了Python环境的两处关键配置,并提供了.vscode目录生成方法,轻松解决VSCode中ESP-IDF项目头文件无法识别的问题。

2025-03-15 19:04:02 2750 6

原创 02_LVGL学习笔记:深理解样式(Style)机制与应用方法

本文详细介绍了LVGL中样式(Style)的概念和使用方法,包括样式对象(lv_style_t)的定义、各种视觉属性(背景、边框、文本、阴影、布局等)的设置方法、不同状态下的样式应用以及样式内存的优化机制。此外,文章还详细区分了普通样式与本地样式,探讨了两者在实际开发中的使用场景与优势,帮助开发者高效地管理和应用样式,轻松实现界面的个性化定制。

2025-03-12 22:33:10 2025 1

原创 01_LVGL学习笔记:对象与盒子模型详解

本文介绍了 LVGL 中对象(控件)的基本概念、图层结构(活动屏幕、顶层、系统层)、对象的大小与位置设置,以及 LVGL 采用的“盒子模型”设计思想。通过解析边界框、边框宽度、内边距、外边距与内容区,阐述了 LVGL 如何以统一的矩形区域抽象管理界面元素,并在不同布局模式下灵活控制对象的对齐、间距与层级,帮助开发者高效构建嵌入式 GUI 界面。

2025-03-11 23:19:00 1506

原创 基于 Windows 上 VS Code 的 LVGL 仿真开发环境配置指南

本文介绍在 Windows 平台上利用 VS Code 配置 LVGL 仿真开发环境的步骤。首先下载并放置 FreeRTOS 和 LVGL 依赖文件,然后配置 mingw、cmake 和 SDL2,并将 cmake/bin 与 mingw/bin 添加到系统环境变量。针对 CMakeLists.txt 中 SDL2 查找错误,提供了设置 CMAKE_PREFIX_PATH 和修改 sdl2-config.cmake 文件路径的解决方案,同时调整 main.c 避免 SDL_main 错误。

2025-03-10 21:32:04 2704 3

原创 ARM Cortex-M 内存映射详解:如何基于寄存器直接读写 寄存器映射方式编码程序 直接操作硬件寄存器来控制 MCU

ARM Cortex-M 系列 MCU 采用 32 位地址总线,内存空间按照存储功能划分为多个区域,包括 Flash(程序存储)、RAM(变量存储)、外设寄存器和系统控制寄存器(NVIC、SysTick)。本文详细解析各个地址段的作用,包括向量表(Vector Table)、程序存储(Flash)、Bootloader、数据存储(RAM)、外设控制(GPIO、UART)和系统管理(中断控制、定时器等)。此外,文章还介绍了栈与堆的内存分布、系统优化建议以及典型的存储映射示例,以帮助开发者更高效地管理 MCU

2025-03-09 22:43:03 2473

原创 深入解析 MCU 内存架构:Flash、RAM、代码与变量存储详解 .rodata .text heap stack .bss .data code RO-data RW-data ZI-data

在嵌入式系统中,MCU 内存的合理管理至关重要。本文以 STM32F103 为例,详细解析 MCU 内存分布,包括 Flash(存储 .text 和 .rodata)、RAM(存储 .data、.bss、堆和栈)的具体划分。此外,我们深入剖析 ARM 编译器中的 Code、RO-data、RW-data、ZI-data 以及它们的存储位置、作用和运行时行为。通过直观的存储结构、示例代码和优化建议,帮助开发者理解和优化 MCU 内存管理,以提高系统的内存资源利用率。

2025-03-09 22:08:56 2379 2

原创 深入浅出解析 FreeRTOS 内存管理:heap_1~heap_5 详解、源码分析与实验

FreeRTOS 提供了五种不同的内存管理方案(heap_1~heap_5),用于任务、队列和信号量等系统对象的动态内存分配。其中,heap_1 不支持释放,heap_2 允许释放但不合并空闲块,heap_3 直接调用 malloc/free,heap_4 支持合并空闲块减少碎片化,heap_5 进一步支持多个不连续的 RAM 区域。本篇文章详细分析每种 heap_x 的实现方式,并通过代码示例和实验验证其内存管理特性,同时解析 FreeRTOS 额外的内存开销,包括块头管理、对齐填充等。

2025-03-09 17:11:53 1466

原创 解析 FreeRTOS Tickless 低功耗模式:原理、配置与实验操作

FreeRTOS Tickless 低功耗模式是一种智能节能机制,通过关闭系统滴答定时器(SysTick)让 MCU 在空闲时进入低功耗模式,仅在必要时唤醒 CPU,从而降低功耗。本文深入解析 Tickless 模式的工作原理、常见低功耗模式(Sleep、Stop、Standby)、关键配置项及其作用,并结合 FreeRTOS 任务同步实验,展示 Tickless 低功耗模式的实战应用。

2025-03-09 12:44:26 1741

原创 深入浅出解析 FreeRTOS 软件定时器 定时器服务任务:机制、API 详解及实践应用

FreeRTOS 软件定时器是一种基于任务调度器的时间管理工具,支持单次和周期性定时任务,适用于定时事件触发、任务同步等应用。与硬件定时器不同,软件定时器无需额外硬件资源,但受调度影响,精度略低。软件定时器由定时器服务任务统一管理,并通过任务队列存储定时器操作请求,确保高效执行。本文介绍了软件定时器的核心概念、相关 API 及其配置方式,并通过实验演示了定时器的创建、启动、停止、周期修改,以及发送函数至定时器服务任务执行。该机制可用于按键消抖、周期数据采集等,提高系统响应效率。

2025-03-08 22:26:47 1165

原创 FreeRTOS 任务通知详解:机制、API 及应用示例 实验讲解

任务通知是 FreeRTOS 提供的高效任务同步机制,比信号量和消息队列更轻量,直接存储在任务控制块中,避免额外内存开销。任务通知值与索引配合使用,多个索引相互独立,适用于不同任务同步需求。本文介绍 xTaskGenericNotify() 等核心 API,解析 eSetBits、eIncrement 等操作模式,并结合 ulBitsToClearOnEntry 和 ulBitsToClearOnExit 参数,演示如何管理通知值。通过 信号量 和 事件标志组 示例,展示任务通知的实际应用,提升任务调度性能

2025-03-08 16:41:54 992

原创 FreeRTOS 任务间通信机制:队列、信号量、事件标志组详解与实验

本篇文章详细解析了 FreeRTOS 任务间通信机制,包括 消息队列、信号量、事件标志组 的工作原理、API 介绍及适用场景。首先介绍了 队列,分析其 FIFO 特性及队列集的使用方法,并通过按键输入实验演示了 任务间数据传递。接着讲解 信号量(Semaphore) 的三种类型(二值信号量、计数信号量、互斥信号量),探讨其在任务同步、资源管理中的应用,并通过实验分析 优先级翻转及优先级继承 的影响。最后,文章介绍 事件标志组,对比其与信号量的区别,并通过按键触发实验演示了 事件同步机制。

2025-03-07 23:22:21 1533

原创 FreeRTOS 任务管理与运行时间统计:API 解析与配置实践

本篇文章详细解析了 FreeRTOS 任务管理相关 API,包括任务优先级、状态查询、句柄获取、堆栈监测、任务信息获取等核心函数,并介绍了 TaskStatus_t 结构体的作用。文章重点讲解了 FreeRTOS 任务运行时间统计 ,分析了高频中断对任务调度的影响,并提供了详细的配置方法,包括统计CPU占有率、定时器配置、统计数据解析等。此外,文章通过实验对比了不同中断频率对任务调度的影响,并给出了避免 CPU 过载的优化方案,帮助开发者更高效地分析 FreeRTOS 任务执行情况。

2025-03-06 23:01:28 1001

原创 深入理解 FreeRTOS 的中断管理:屏蔽机制、临界区与实验分析

本篇文章详细解析了 FreeRTOS 的中断管理机制,包括 BASEPRI 方式的中断屏蔽、configMAX_SYSCALL_INTERRUPT_PRIORITY 设定的管理范围,以及任务调度如何影响中断优先级。此外,文章深入讲解了 FreeRTOS 提供的屏蔽中断函数及其在任务调度中的作用,并介绍了临界区保护的机制。为进一步理解 FreeRTOS 的中断屏蔽,文章还提供了一个实验:设置不同优先级的定时器中断,并通过按键触发手动屏蔽和启用中断,分析实验现象,帮助开发者更直观地理解 FreeRTOS 的中断

2025-03-05 21:55:39 1664

原创 FreeRTOS 任务的挂起与恢复 任务状态查询

本篇文章详细解析了 FreeRTOS 任务挂起与恢复机制,包括 vTaskSuspend()、vTaskResume()、xTaskResumeFromISR() 以及调度器挂起 vTaskSuspendAll() 和 xTaskResumeAll() 的应用场景。结合 STM32 平台,讲解了如何配置 FreeRTOSConfig.h 以启用相关 API,并详细分析了 vTaskList() 任务状态监视的输出结果。此外,文中提供了 完整代码示例,展示了一个小实验来掌握任务调度控制,帮助开发者更深入理解

2025-03-05 17:41:51 1281

原创 FreeRTOS 源码结构解析与 STM32 HAL 库移植实践(任务创建、删除篇)

本篇文章详细解析了 FreeRTOS 源码结构,包括 Source 目录、移植适配层 portable、内存管理 MemMang 等关键内容。结合 STM32 HAL 库,完整演示 FreeRTOS 的移植步骤,涵盖源码添加、配置修改、系统时钟调整等必要操作。同时,深入讲解 任务管理机制,对 动态任务与静态任务 进行对比,并提供完整示例,包括任务创建、删除、空闲任务内存分配等核心实现。最后,总结数据类型、命名规范、任务控制块(TCB) 及 调度机制,帮助开发者更高效地理解和应用FreeRTOS进行开发。

2025-03-04 23:59:42 1046

原创 深入解析 I²C 与 SPI 协议:原理、时序及软件实现

篇博客详细介绍了 I²C 和 SPI 的工作原理、时序、主从通信方式、信号帧格式,并对比了 两者的区别及适用场景。文章提供了 完整的软件 I²C 和软件 SPI 代码实现,包括 GPIO 配置、时序模拟、数据读写、应答机制 等关键部分。软件 I²C/SPI 适用于无硬件 I²C/SPI 外设的 MCU,并且支持自由选择 GPIO,提高移植性。通过本文,你将深入理解 I²C 和 SPI 的底层通信机制,并掌握如何在 STM32、ESP32、51 单片机等平台上进行实际开发和优化。

2025-03-03 21:51:11 3851 1

原创 ssh配置 远程控制 远程协作 github本地配置

选项指定使用 RSA 加密算法生成密钥,这是一种广泛采用的公钥加密方式,其他可选类型包括 DSA(dss)、椭圆曲线(ecdsa)及更高效的 Ed25519(ed25519)等。定义了密钥长度为 4096 位,较长的位数提升了安全性(尤其适用于敏感场景),但生成和使用时略慢于常见的 2048 位标准。(localhost/本地主机): 这个 IP 地址是回环地址,指的是你自己的电脑。是 OpenSSH 提供的用于生成和管理 SSH 密钥对的命令。目录存在,然后将 Linux 的公钥复制到该目录下的。

2025-02-25 21:44:24 954

如何读懂一款高频放大器的数据手册:以 LMH6881 为例 射频/模拟器件选型

如何读懂一款高频放大器的数据手册:以 LMH6881 为例 射频/模拟器件选型

2025-07-21

空空如也

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

TA关注的人

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