SSD1315 OLED 驱动详解:硬件抽象层与 I2C 通信
SSD1315 OLED 驱动芯片的特性及其在嵌入式开发中的应用。文章详细解析了 SSD1315 的硬件抽象层实现,包括 I2C 通信协议的地址配置、读写操作及控制字节的使用。同时阐述了其页寻址模式的显存结构,提供了设置页面地址和列地址的代码示例。针对列地址分两次传输的原因进行了说明,并强调了边界检查的重要性以避免显示错位问题。
SSD1315 OLED 驱动芯片的特性及其在嵌入式开发中的应用。文章详细解析了 SSD1315 的硬件抽象层实现,包括 I2C 通信协议的地址配置、读写操作及控制字节的使用。同时阐述了其页寻址模式的显存结构,提供了设置页面地址和列地址的代码示例。针对列地址分两次传输的原因进行了说明,并强调了边界检查的重要性以避免显示错位问题。

单链表的数据结构与 C 语言实现。内容包括单链表概念、节点定义、以及核心操作函数的编写,如头插尾插、头删尾删、指定位置插入删除、查找与销毁等。文章提供了完整的头文件、源文件及测试代码示例,帮助读者理解线性表在内存中的动态分配与指针操作逻辑。

基于链表实现的队列数据结构包含初始化、判空、入队、出队、销毁、获取队首尾元素及统计大小等核心功能。文章通过 C 语言代码演示了如何维护头尾指针以优化操作效率,确保内存管理的健壮性。
AM32 电调固件基于开源 FOC 算法,适用于多旋翼无人机。文章从硬件基础入手,解析 STM32 主控、功率驱动、采样及通信接口架构。深入源码目录结构,涵盖主逻辑、外设驱动、协议栈、控制算法及保护机制模块。重点阐述 DShot 协议解析、PWM 生成及过流过温保护原理,帮助开发者理解飞控指令至电机转速的转换过程,为二次开发与调试提供底层参考。

详细讲解了数据结构中的双向循环链表。内容包括链表分类、双向链表的概念与结构(哨兵位)、基本操作(尾插、头插、尾删、头删、指定位置插入删除、查找、打印)及销毁的实现原理。提供了基于 C 语言的完整代码示例(List.h, List.c, test.c),展示了如何通过一级指针管理带头节点的双向循环链表,确保接口一致性与内存安全。
STM32定时器主从级联的应用场景与核心机制。通过级联可将两个16位定时器扩展为32位计数器,解决低频信号测量精度不足的问题。重点解析了TRGO信号的作用及CR2寄存器MMS位的配置方法,展示了如何利用主定时器触发从定时器以实现高精度同步控制。

详细讲解了线性表中的顺序表与链表。涵盖静态与动态顺序表的结构定义、扩容机制及增删查改操作实现;单链表与双向带头循环链表的节点操作与分类;以及常见算法题如移除元素、反转链表、合并有序数组等的双指针解法。最后对比了顺序表与链表在存储空间、访问效率及插入删除性能上的差异,帮助读者理解两种数据结构的核心特性与适用场景。
探讨了单片机开发中C语言保持主流地位的原因。主要优势包括极致的代码效率与资源控制,相比C++减少了运行时开销和内存占用;以及成熟的工具链与生态系统。尽管C++在桌面领域表现优异,但在资源受限的嵌入式环境中,C语言的稳定性和可靠性仍占主导,适用于工业控制、汽车电子等领域。

C/C++ 中的结构体概念,涵盖声明方式、变量初始化、自引用实现链表、内存对齐规则及优化、传参方式以及位段的使用与注意事项。重点讲解了内存对齐的原因、默认对齐数修改方法,以及位段在节省空间时的跨平台风险。

Linux 系统编程中的文件描述符(FD)概念及其底层实现机制。阐述了进程创建时默认打开的标准输入输出流(0, 1, 2),以及文件描述符的分配规则(从最小未使用下标开始)。详细讲解了输出重定向、追加重定向和输入重定向的原理及代码实现,区分了标准输出流与标准错误流在重定向时的不同行为。最后介绍了 dup2 函数在文件描述符复制与重定向中的应用,通过示例展示了如何将程序输出重定向至文件。
系统讲解滑动窗口算法在多个经典题目中的应用,包括长度最小子数组、无重复字符最长子串、乘积小于 K 的子数组、水果成篮及最小覆盖子串。核心涵盖双指针移动策略、哈希表计数、乘法与加法初始化差异、以及有效状态判断逻辑。通过代码解析与避坑指南,帮助读者掌握滑动窗口的通用模板与边界处理技巧,理解时间复杂度 O(n) 的实现原理。
基于 ESP32 主控与 NEMA17 步进电机的双轴张力控制墙绘机系统。采用分层架构,底层电机驱动结合 FreeRTOS 实时控制,中层运动引擎支持 SVG 解析与路径规划,上层提供 Web 交互。通过皮带弹性补偿与坐标畸变校正算法,实现±1.5 mm 定位精度。硬件成本控制在 200 元内,支持 Wi-Fi 远程配置及多色分层绘制。解决了传统绘图仪结构复杂问题,利用墙面作为基准面简化部署。

栈(Stack)这一线性表的数据结构,重点阐述了其后进先出(LIFO)的特性及基本操作。内容包括顺序栈的结构定义、初始化、入栈、出栈、获取栈顶元素等核心功能的 C 语言实现代码。此外,还探讨了双栈共享空间的优化策略,利用数组两端向中间延伸的方式提高内存利用率。文章提供了完整的代码示例及遍历方法,适合初学者掌握栈的基础原理与应用。

链表十大经典 OJ 题目涵盖删除节点、反转链表、寻找中间结点、倒数第 k 个结点、合并有序链表、链表分割、回文结构判断、相交链表检测、环检测及入环节点查找。内容提供思路分析与 C 语言代码实现,涉及快慢指针、哑结点、双指针等核心技巧,帮助读者掌握链表操作基础与面试考点。
介绍基于 STM32 的数字万用表 DIY 项目。涵盖项目背景、核心价值及硬件设计精要。主控选用 STM32F103C8T6,具备 12 位 ADC 和丰富外设。针对高精度需求可考虑 STM32F373 系列。文中对比了电阻分压等量程扩展方案,适合电子爱好者学习模数转换与信号调理技术。
介绍在 STM32 微控制器上移植和部署 LVGL 图形库的完整流程。涵盖硬件资源评估(SRAM/SDRAM)、显示与输入驱动初始化、定时器心跳设置、基础 UI 控件创建及动画实现。同时分析了常见开发问题如屏幕闪烁、触摸校准、内存溢出及性能优化方案(DMA2D、部分刷新)。旨在帮助开发者在资源受限环境下构建流畅的嵌入式人机交互界面。

介绍在 STM32 裸机环境下实现多任务调度的方法。通过利用 HAL 库的 SysTick 定时器获取时间戳,构建轻量级任务调度器,替代传统的阻塞式延时(HAL_Delay)。该方案支持非阻塞轮询,确保按键扫描、屏幕刷新、LED 控制等多任务并发执行,提升系统实时性。代码基于结构体封装,易于移植至不同 STM32 系列,并通过 IO 翻转法验证定时精度。
Keil 5 开发环境的安装流程,涵盖 C51 单片机与 STM32 微控制器的双版本部署。内容包括分别安装 C51 版与 MDK 版,通过合并配置文件实现兼容,以及后续芯片包的安装。安装时需注意路径设置、驱动安装及管理员权限。

使用 VSCode 配合 STM32CubeMX 进行嵌入式开发的完整流程。内容包括安装 VSCode、STM32CubeMX、CMake 及必要插件;配置 STM32CubeMX 生成工程;在 VSCode 中配置调试器(launch.json);以及通过修改 CMakeLists.txt 添加自定义代码文件的方法。旨在帮助开发者利用 VSCode 提升 STM32 开发效率。

在 STM32F407ZET6 开发板上移植 LVGL 8.3 图形库的完整流程。涵盖硬件选型、屏幕驱动移植、LVGL 源码集成、工程配置、显示与输入设备适配、系统心跳及任务调度处理。通过配置 lv_conf.h、编写 disp_flush 回调及触摸读取函数,实现 LCD 屏幕的图形界面显示与触摸交互功能。