打破嵌入式无法做单元测试的神话。介绍Unity/CMock框架的使用,以及如何Mock掉硬件寄存器依赖。
揭秘 main() 之前的世界:Cortex-M 启动代码全解析
printf(‘Hello World’) 并不是程序执行的第一行代码。本文深入汇编,解析Reset Handler如何搬运数据段、清零BSS并非跳转至main函数。
魔法滤镜:在单片机上实现卡尔曼滤波 (1D)
传感器数据抖动太厉害?均值滤波响应太慢?卡尔曼滤波(Kalman Filter)或许是最佳平衡点。本文提供并解析一个不到20行代码的C语言实现。
极致低功耗设计:从硬件选型到软件策略
对于电池供电的IoT设备,每 1μA 都要锱铢必较。本文详解硬件漏电排查、软件休眠策略以及Tickless模式的实现。
HP-15-dc1061tx-hackintosh
暗影精灵5 | macOS Sequoia 15.0.1 | OpenCore 1.0.2 | hackintosh
告别面条代码:有限状态机 (FSM) 设计模式
逻辑混乱、Bug频出的嵌入式代码往往是因为缺乏状态机思维。本文介绍 Switch-Case、表驱动及分层状态机 (HSM) 的实现。
在单片机上玩转数字信号处理:FFT 实战
想做音频频谱分析?想从噪声中提取正弦波?FFT是你的好朋友。本文介绍如何利用ARM CMSIS-DSP库在STM32上实现高效的定点FFT。
更新docker时报GPG密钥不可用
更新docker时报GPG密钥不可用
嵌入式文件系统选型:LittleFS 还是 FATFS?
别再在这个SPI Flash上硬跑FATFS了!本文深度对比FatFs与LittleFS的架构差异,掉电安全性以及磨损均衡策略。
数据的守护神:CRC 校验算法的极致优化
CRC校验是通信中最常用的数据完整性检查手段。本文对比移位法与查表法的性能差异,并展示如何利用C++ constexpr在编译期自动生成查表。
