• 最新文章
  • Linux系统
  • 嵌入式开发
  • 控制算法
  • 代码开发
  • 笔记
  • 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语言进阶:双向循环链表与哨兵头节点

MQTT 协议详解:Topic、QoS、遗嘱消息与保留消息

MQTT 协议是物联网场景中应用极广的轻量级消息协议,基于发布/订阅模型,专为低带宽、不稳定网络和资源受限设备设计。本文按「协议定位 → 连接存活 → 消息可靠性 → 异常断线 → 状态同步」的顺序,系统梳理 MQTT 协议的五个关键工程机制:Topic 设计、Keep Alive、QoS、遗嘱消息和保留消息。 ℹ️ 先抓住五点 MQTT 是应用层协议,工作在 TCP/IP 之上 它以 Broke
MQTT 协议详解:Topic、QoS、遗嘱消息与保留消息

温湿度传感器 DHT11时序详解

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

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

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

C语言字符串与sizeof解析

📋 速记 sizeof 是关键字,用来计算对象或类型占用的字节数。 C 语言字符串本质是以 \\0 结尾的 char 数组。 sizeof(arr) / sizeof(arr) 可以计算数组元素个数。 数组传参后会退化为指针,因此长度通常需要单独传入。 统计字符串字符个数时,应使用 strlen,而不是 sizeof。 💡 记忆口诀 sizeof 算内存,strlen 数字符;数组退指针,长度
C语言字符串与sizeof解析

STM32 总线架构详解:ICode/DCode/System/DMA 工作原理

STM32 总线架构采用改进型哈佛架构,CPU 通过 ICode、DCode、System 三条通路工作,DMA 也能作为主设备参与访问;AHB/APB 是片上总线分层,连接不同速率的外设。本文将从访问通路和片上互连两个层次,帮你建立清晰的认知。 改进型哈佛架构:为什么要多条总线 架构 特点 冯·诺依曼 指令和数据共享一条路,易瓶颈 经典哈佛 指令和数据分路,但结构死板 STM32 改进型哈佛 统
STM32 总线架构详解:ICode/DCode/System/DMA 工作原理

C语言弱链接函数完全指南:__weak原理与STM32实战

1. 什么是弱链接函数 __weak 修饰的函数属于弱符号,用于提供可被覆盖的默认实现。当链接时发现同名的强符号函数,链接器会优先使用强符号,弱符号被忽略。 ℹ️ 典型应用:HAL 库提供空的弱回调函数,用户在自己的代码中实现同名函数即可覆盖,无需修改库代码。 2. 语法格式 GCC 原生语法是 __attribute__((weak)),通常会自定义宏 __weak 来简化使用: #define
C语言弱链接函数完全指南:__weak原理与STM32实战

STM32 中断系统详解:NVIC、EXTI、优先级分组与 HAL 库实战

STM32 中断系统详解 1. 什么是中断? CPU 正在执行主程序,突然外部或内部事件发生(按键按下、定时器溢出、串口收到数据……),CPU 暂停当前工作,跳去处理紧急事件,处理完再回来继续。 💡 核心思想:中断让 CPU 不用\"傻等\",而是事件驱动——有事才处理,没事干正事。 2. NVIC — 嵌套向量中断控制器 NVIC = Nested Vectored Interrupt Contro
STM32 中断系统详解:NVIC、EXTI、优先级分组与 HAL 库实战

C语言指针详解(下):空指针、野指针、悬空指针与嵌入式实战

C语言指针详解(下)— 安全与嵌入式实战 ℹ️ 导读:本篇讲解指针的安全使用和嵌入式实战。指针基础概念与语法请看《C语言指针详解(上)》。 一、空指针(NULL Pointer) 1.1 定义 空指针是一个不指向任何有效内存地址的指针,其值为 NULL(即 0)。它是 C 语言中表示"指针当前没有指向任何东西"的标准方式。 #include <stdio.h> #i
C语言指针详解(下):空指针、野指针、悬空指针与嵌入式实战