在嵌入式开发中,MCU 内部的 Flash 常用于存储配置信息、日志数据或用于 OTA 升级。STM32F4 系列 MCU 提供了对 Flash 的灵活操作能力,包括按扇区擦除、字节或半字写入等。本文将围绕一段实际使用的 Flash 操作代码进行讲解,主要涉及 Flash 的擦除、写入与读取功能。
2025年06月25日
在嵌入式开发中,MCU 内部的 Flash 常用于存储配置信息、日志数据或用于 OTA 升级。STM32F4 系列 MCU 提供了对 Flash 的灵活操作能力,包括按扇区擦除、字节或半字写入等。本文将围绕一段实际使用的 Flash 操作代码进行讲解,主要涉及 Flash 的擦除、写入与读取功能。
2025年06月25日
在嵌入式系统中,任务之间常常需要通过一种结构化方式传递消息或数据,例如传感器采集值上传、串口数据解析、指令调度、事件响应等。在这些场景下,“队列(Queue)”是一种非常经典且高效的数据组织形式。
通用队列模块以结构体数组为核心,结合固定内存与循环索引,实现了一个轻量、稳定、适配性强的队列管理器。该模块适合用于裸机或 RTOS 系统,是构建通信缓冲、消息队列、任务分发机制的基础组件。
2025年06月25日
于嵌入式工程师的日常工作里,I2C 总线借由两根线达成设备通信的特质,堪称“极简美学”的典范。然而,这看似简洁的二线制模式,却可能在某一时刻陡然陷入“困局”——时钟线(SCL)执拗地维持高电平状态,数据线(SDA)被牢牢拉低,整个系统仿若被按下了暂停键一般。此般状况,正是令开发者颇为头疼的 I2C 死锁问题。
本文将融合原理剖析与实战经验,引领您揭开死锁的神秘面纱,掌握从诊断直至恢复的全流程解决之道。
2025年06月25日
在嵌入式开发中,“定时”几乎无处不在——LED 闪烁、任务轮询、事件触发、超时重试、UI动画、通信心跳……每一个场景都在向你提出一个问题:你如何高效地管理多个异步时间事件?
STM32 的硬件定时器固然强大,但数量有限,且每次使用都要配置寄存器、时钟源、回调中断,工程复杂度指数级增长。有没有一种更轻量、灵活、高可复用的解决方案?答案就是:
2025年06月25日
在嵌入式产品开发中,按键输入看似简单,但要实现产品级的稳定性和交互体验,需要考虑多个细节:硬件抖动、长按/短按/连击的识别、响应延迟、误触容错等。尤其在一些工业控制或消费电子产品中,按键响应的准确性与用户体验直接相关。
本文将结合实际经验,围绕产品级按键系统的核心问题展开,包括:软件去抖动、按键事件识别(单击、双击、长按)、基于状态机的设计思路,并辅以清晰的代码示例。
2025年06月25日
接上篇笔记我们分享的是RTT的PIN设备驱动:「RT-Thread笔记」IO设备模型及PIN设备,其中用到PIN驱动框架中的pin_mode函数来设置引脚的模式:
2025年06月25日
大家好,我是杂烩君。
本次我们分享的是嵌入式中常用的一种思想 / 编程模型——观察者模式。
观察者模式(Observer Pattern)是一种行为设计模式,其核心在于建立对象间的动态订阅-通知机制。