• 最新文章
  • Linux系统
  • 嵌入式开发
  • 控制算法
  • 代码开发
  • 笔记
  • C语言进阶

CMake学习:快速一步一步入门到进阶静态库+动态库(篇一)

💡 提示:本笔记特点 CMake学习篇一:快速一步一步入门到进阶 静态库+动态库 每一步都有完整的文件路径 每个文件的内容都完整展示 按照操作顺序编号 清晰标注哪个文件在哪个文件夹 第一部分:最简单的项目(只有一个 main.c) 项目结构 hello/ ← 项目根目录 ├── CMakeLists.txt ← CMake 配置文件 └── main.c ← 你的 C 代码 1.1 步骤 1:创建
CMake学习:快速一步一步入门到进阶静态库+动态库(篇一)

CMake 学习引入:从 GCC 到 Makefile 再到 CMake

通过三个阶段的演进,理解为什么需要 CMake:GCC 命令行 → Makefile → CMake 示例代码 add.h: #ifndef ADD_H #define ADD_H int add(int a, int b); #endif add.c: #include "add.h" int add(int a, int b) { return a + b; } main.
CMake 学习引入:从 GCC 到 Makefile 再到 CMake

Python复数与指数运算

最近在学 FFT,里头频繁出现复数和复指数项 ,索性把 Python 里处理复数的几个工具梳理一下:内置的 complex 类型、标准库的 cmath 模块,以及 numpy 在数组场景下的覆盖。 前言:complex 类型与 cmath 模块 关于 complex 类型 complex 是 Python 自带的数值类型,从 Python 1.4(1996 年)就已经存在,和 int、float、
Python复数与指数运算

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 与计时基础

通信协议篇四:CAN 总线原理与通信机制基础详解

CAN(Controller Area Network,控制器局域网)是 Bosch 在 1980 年代提出的一种高可靠串行总线。它采用差分传输,支持多主通信,通过报文 ID 完成仲裁,并带有较完整的错误检测机制。 ℹ️ 本文范围:本文主要介绍经典 CAN。文中会顺带提到 CAN FD 和 CAN 2.0A / 2.0B,但重点仍然是基础概念、帧格式、仲裁和同步机制。 1. 特点与应用背景 CAN
通信协议篇四:CAN 总线原理与通信机制基础详解

通信协议篇三: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语言位运算笔记