C 语言内存管理(一):内存段与布局(.text/.data/.bss/堆/栈) 内存管理 — 内存段与布局 内存管理是嵌入式 C 语言开发的核心难点。本文聚焦于程序内存布局、内存段的逻辑与物理映射、以及嵌入式内存优化实践。 1 程序内存布局 1.1 内存段的基本概念 C 程序运行时,内存被划分为不同的区域,每个区域存储特定类型的数据: 代码段(.text):存放程序的机器指令,只读 只读数据段(.rodata):存放常量和字符串字面量,只读 已初始化数据段(.data):存放 C语言进阶 林峰 4小时前 2 热度 0评论
FreeRTOS阅读源码之编程风格 FreeRTOS 阅读源码之编程风格 一、编程风格 FreeRTOS 严格遵循匈牙利命名法——看到名字就能推断出返回值类型、所属模块和参数类型。 变量看前缀,类型一目了然 → u/c/s/l/x/p 函数三段式,返回+模块+动作 → vTaskDelay / xQueueSend 宏看开头词,就知在哪定义 → config/pd/port/task 💬 匈牙利命名法已不是现代必用规范(IDE 弱化 嵌入式开发 林峰 15小时前 8 热度 0评论
SolidWorks 装配体:如何让零件和装配体基准面快速重合 目标 让零件的前视/上视/右视基准面(或原点坐标系)与装配体的对应基准面/原点完全重合——位置 + 方向全部对齐。 ℹ️ 核心思路:选中两个原点 → 添加重合配合 → 勾选\"对齐轴\",一步到位。 操作步骤 1. 确保零件为浮动状态 右键零件 → 选择浮动(不能是"固定",否则无法添加配合)。 2. 依次选中两个原点 先点击装配体的原点(设计树最上方的原点,或图形区红/绿/蓝箭头 3D打印 林峰 2天前 19 热度 0评论
嵌入式通信基础概念 嵌入式通信基础概念 在深入各种总线之前,先把几个容易混淆的基础概念彻底搞清楚。这些是理解所有通信协议的"元知识"。 1. 同步 vs 异步:到底谁在"喊节拍"? ℹ️ 一句话区别:有没有一根专门的时钟线来统一收发双方的节奏。 对比项 同步通信 异步通信 时钟线 有(如 I2C 的 SCL、SPI 的 SCLK) 没有 同步方式 主机通过时钟线"喊节 嵌入式开发 林峰 3天前 66 热度 0评论
PID 控制算法: 位置式与增量式对比 第二篇(进阶) PID 进阶实战:位置式与增量式完全对比 在上一篇《PID 控制算法 第一篇(基础篇)》中,介绍了 PID 控制的基础概念、三个参数的物理意义以及基本的调参方法。如果你还没有阅读过第一篇,建议先回顾基础知识再来阅读本文。 本篇作为 PID 系列的第二篇,将深入探讨 PID 控制器在工程实践中最核心的两种离散化实现方式——位置式 PID 和增量式 PID。我们会从数学推导、代码实现、优缺点对比、工程 嵌入式开发 林峰 4天前 159 热度 0评论
第四篇FreeRTOS同步机制-信号量、互斥量与优先级反转 第四篇 FreeRTOS 同步机制:信号量、互斥量与优先级反转 掌握信号量与互斥量的原理和使用场景,深入理解优先级反转问题。这是 RTOS 面试中出现频率最高的知识点之一。本文从"为什么需要同步"讲起,带你彻底搞清楚二值信号量、计数信号量、互斥量的区别和实战用法。 一、为什么需要同步机制? 1.1 多任务并发问题 任务A: 读取温度 → → 写入全局变量 temp 任 未分类 林峰 4天前 74 热度 0评论
第二篇FreeRTOS任务管理-基础架构与生命周期 FreeRTOS 基础架构与任务管理 理解 RTOS 存在的意义,掌握 FreeRTOS 任务的完整生命周期,能独立创建多任务程序。本文从裸机与 RTOS 的对比入手,带你一步步搞懂 FreeRTOS 任务的创建、状态机、调度规则和常用 API。 一、FreeRTOS 是什么?为什么需要它? 1.1 裸机 vs RTOS 对比 对比项 裸机(前后台系统) FreeRTOS 架构 while(1) 嵌入式开发 林峰 5天前 182 热度 0评论
嵌入式通信协议UART、I2C 、SPI、CAN、Modbus总线协议区别 嵌入式常用总线特点与区别 前置知识: 先搞懂同步/异步、串行/并行、全双工/半双工、差分/单端信号等基础概念,后面的协议就能秒懂《 👉 通信基础概念》 一览表(速查) 特性 UART I2C SPI CAN Modbus 全称 Universal Asynchronous Receiver/Transmitter Inter-Integrated Circuit Serial Peripheral 嵌入式开发 林峰 5天前 547 热度 0评论
详解GCC编译器常用命令 GCC 从入门到实战:编译四阶段 + 常用命令速查 GCC(GNU Compiler Collection)是 Linux 下最常用的 C/C++ 编译器,也是嵌入式开发中不可或缺的工具。 基本格式:gcc 源文件 -o 输出文件 💡 嵌入式中的交叉编译 交叉编译器的用法和 gcc 完全一致,只是前缀不同: arm-linux-gnueabihf-gcc — ARM Linux aarc C语言进阶 林峰 6天前 125 热度 0评论
第三篇FreeRTOS 通信机制 — 队列、事件组与任务通知 FreeRTOS 通信机制 — 队列、事件组与任务通知 FreeRTOS 提供了三大核心通信机制:队列、事件组、任务通知。掌握它们的原理、API 和适用场景,是写好多任务程序的关键。本文带你逐一攻破。 一、队列(Queue) 1.1 什么是队列 FreeRTOS 队列(又称消息队列)是一种线程安全的 FIFO 缓冲区,专门用于在任务与任务、任务与中断之间传递数据。你可以把它想象成一个带锁的管道—— 嵌入式开发 林峰 6天前 67 热度 0评论