C语言变量分类、作用域、链接属性与存储期笔记

先看整体 变量总表 写法 / 对象 定义位置 作用域 存储期 链接属性 常见用途 int a;(局部) 函数内 块作用域 自动存储期 无链接 保存函数内部临时数据 static int a;(局部) 函数内 块作用域 静态存储期 无链接 多次调用之间保留值 int a;(全局) 函数外 文件作用域 静态存储期 外部链接 多个函数 / 文件共享数据 static int a;(全局) 函数外 文件作
C语言变量分类、作用域、链接属性与存储期笔记

HC-SR04超声波测距模块:卡尔曼滤波练习

HC-SR04 是一款经典的超声波测距模块,测距范围 2cm ~ 400cm,精度约 3mm。这篇主要不是单纯讲模块怎么用,而是拿它来练一遍卡尔曼滤波,顺便把工作原理、接线方法、MicroPython 实现和中值滤波配合思路一起记下来。 ℹ️ 先记个结论:HC-SR04 的本质就是发射超声波,测回波时间,再换算距离。 一、工作原理 HC-SR04 模块通过发射超声波并接收回波来测量目标距离,工作频
HC-SR04超声波测距模块:卡尔曼滤波练习

Arduino 与 MicroPython 基础入门:PWM、GPIO、ADC、串口、Socket 与计时基础

这篇笔记整理了 Arduino UNO 与 ESP32-C3 MicroPython 开发里最常用的基础知识,包括 PWM、时间函数、GPIO、ADC、多线程、串口、Socket 以及 Arduino 常见数值类型。内容尽量保持“短、准、方便查阅”,适合作为入门和速查参考。 一、PWM 输出基础: Arduino analogWrite() 与 MicroPython PWM PWM(脉宽调制)通
Arduino 与 MicroPython 基础入门:PWM、GPIO、ADC、串口、Socket 与计时基础

通信协议篇三:SPI 通信原理详解之时钟模式、时序与W25Q32示例

SPI 是嵌入式开发里最常见的高速串行总线之一。相比 I2C 和 UART,SPI 结构更直接、速度更高,也更适合和 Flash、ADC、DAC、显示屏等板级外设通信。本文从底层原理、时钟模式、通信时序到 W25Q32 读 ID 实验,系统讲清 SPI 到底是怎么工作的。 ℹ️ 一句话先讲清楚:SPI(Serial Peripheral Interface,串行外设接口)是最早由摩托罗拉(Moto
通信协议篇三:SPI 通信原理详解之时钟模式、时序与W25Q32示例

C语言循环队列

循环队列(Circular Queue / Ring Buffer) 1. 定义 循环队列是基于定长数组实现的队列。其核心思想是将数组视为首尾相接的环形空间,通过让 front / rear 用 % N 循环移动复用存储单元。 在嵌入式系统中,循环队列常称为 Ring Buffer(环形缓冲区),常用于:UART 接收缓冲、按键事件、日志缓存。。 2. 为什么需要循环队列 顺序队列若采用数组实现,
C语言循环队列

C语言位运算笔记

C 语言位运算是嵌入式开发的基础能力。对于 STM32 来说,GPIO、UART、SPI、定时器等外设最终都是通过寄存器中的 bit 位来控制的。掌握位运算,才能真正理解 HAL 库背后的底层逻辑,并具备直接操作寄存器的能力。 💡 核心结论 嵌入式里最常见的 4 个动作就是:置位、清位、翻转、读位。 六大位运算符速览 运算符 名称 示例 说明 & 按位与 a & b 同 1 为 1
C语言位运算笔记

通信协议篇二:I2C 通信协议详解

I2C 通信协议(Inter-Integrated Circuit)是飞利浦设计的两线同步串行总线,仅用 SCL(时钟)和 SDA(数据)两根线即可实现一主多从通信。本文结合 ESP32-C3 + SHT40 实战,从 I2C 通信协议时序原理到 MicroPython 代码逐层拆解。 一、I2C 通信时序详解 ℹ️ 四个核心信号 信号 解决的问题 触发条件 START 通信开始边界 SCL 高电
通信协议篇二:I2C 通信协议详解

C语言进阶:双向循环链表与哨兵头节点

C语言进阶:双向循环链表与哨兵头节点 双向循环链表与哨兵节点是嵌入式 C 语言开发中最实用的链表组合。链表通过指针串联离散内存节点,弥补了数组在插入/删除上的不足。本文重点讲解双向循环链表与哨兵头节点设计——这是嵌入式系统中最常用的链表形态。 一、数组 vs 链表 特性 数组 链表 内存布局 连续,随机访问 O(1) 离散,需遍历 O(n) 插入/删除 需移动数据 O(n) 只改指针 O(1) 大
C语言进阶:双向循环链表与哨兵头节点

通信协议篇一:温湿度传感器 DHT11单总线时序详解

通信协议篇二温湿度传感器 DHT11 的时序是理解这个模块的关键。只要搞懂单总线空闲高电平、主机起始信号、传感器响应信号,以及 40 位数据格式,就能更轻松地看懂逻辑分析仪波形,也能理解 ESP32 / MicroPython 代码为什么这样写。 dht11 sensor module overview ℹ️ 核心结论:DHT11 的 DATA 单总线在空闲状态下保持高电平。主机先拉低总线发起通信
通信协议篇一:温湿度传感器 DHT11单总线时序详解

C语言结构体:定义、访问、指针、嵌套

C语言结构体是 C 语言中最常用的复合数据类型之一。它不仅能把多个不同类型的数据组织成一个整体,还经常出现在函数传参、链表设计、设备寄存器映射、通信协议解析等场景中。理解结构体,基本就掌握了 C 语言中“描述复杂对象”的核心手段。 一、C语言结构体是什么? C语言结构体是一种用户自定义的数据类型,可以将多个不同类型的数据组合在一起,形成一个逻辑整体。它特别适合描述一个对象的多种属性,比如学生的姓名
C语言结构体:定义、访问、指针、嵌套