嵌入式C语言开发
文章平均质量分 89
mftang
资深嵌入式软件开发者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UART通信TX和RX编码规则与波形
UART通信是一种异步串行通信协议,其中TX(发送线)和RX(接收线)分别用于发送和接收数据。本文主要介绍编码规则和波形。原创 2026-03-13 12:24:19 · 1116 阅读 · 0 评论 -
C语言条件编译详解
条件编译是C语言预处理器提供的一项重要功能,它允许根据特定的条件决定哪些代码片段参与编译,哪些被忽略。这一机制极大地增强了代码的灵活性和可移植性,广泛应用于头文件保护、平台适配、调试开关等场景。原创 2026-03-13 12:23:18 · 643 阅读 · 0 评论 -
EasyLogger介绍
EasyLogger 是一款专为嵌入式开发设计的超轻量级、高性能 C/C++ 日志库,核心优势在于极低的资源占用和高度可扩展性,完美适配资源敏感型设备,如 IoT 产品、可穿戴设备、智能家居、单片机等。其设计理念是 "小而美",提供极简接口同时支持插件扩展复杂功能。原创 2026-02-11 11:07:03 · 1322 阅读 · 0 评论 -
arm-none-eabi-size 工具详细分析
arm-none-eabi-size 是 GNU 工具链的一部分,用于分析 ARM Cortex-M 等嵌入式系统可执行文件的内存占用情况。原创 2026-02-10 00:15:00 · 1766 阅读 · 0 评论 -
C语言标准演进时间线和特性介绍
C语言从1989年的第一个标准化版本到2017年的最新标准(截至2023年)的演进历程的详细梳理。其进化之路分为几个关键阶段,并阐述每个阶段的核心目标和引入的重要特性。原创 2025-11-19 13:59:36 · 1118 阅读 · 0 评论 -
嵌入式C语言结构体数据对齐方法介绍
在C语言中,结构体的数据对齐是一个重要的概念,它影响内存布局和访问效率。本文详细讲解结构体定义和数据对齐的方法以及应用。理解结构体对齐对于编写高效、可移植的C程序至关重要。原创 2025-10-14 00:30:00 · 895 阅读 · 0 评论 -
base64 数据的编码和解码方法(Zephyr OS-D)
Base64是一种用64个字符来表示二进制数据的编码方式。它通常用于在需要文本环境(如电子邮件、XML、URL参数等)中安全地传输二进制数据。本文主要介绍Base64编码的特点。Base64 是一种简单实用的编码方案,在嵌入式系统和网络通信中有着广泛的应用,特别适合在文本协议中传输少量二进制数据。原创 2025-09-17 00:30:00 · 1166 阅读 · 0 评论 -
BCD码基本原理和应用示例
BCD码(Binary-Coded Decimal)是一种用二进制编码表示十进制数字的编码方式。它的主要作用是简化数字的显示和计算,尤其是在需要精确十进制表示的场景中。理解BCD码的作用和实现方法对于处理需要精确十进制表示的应用非常重要。本文主要介绍BCD码的基本原理和实际示例,可以帮助程序员更好地理解这一概念。原创 2025-09-17 00:15:00 · 3113 阅读 · 0 评论 -
C语言 struct 定义数据结构
结构体是C语言中组织复杂数据的基础,掌握它们对于编写高质量的C程序至关重要。在C语言中,结构体(struct)是一种自定义的数据类型,允许程序员将多个不同类型的数据项组合成一个单一的类型。结构体常用于表示记录或实体,比如学生、员工等。原创 2025-09-16 00:30:00 · 1027 阅读 · 0 评论 -
C语言时间转换 Unix 时间
C语言中Unix时间戳转换的基本框架,可以根据实际需求进行修改和扩展。其提供常用的时间转换函数,用于在Unix时间戳和人类可读的时间格式之间进行转换。本文主要介绍这些接口的使用方法。原创 2025-09-16 00:15:00 · 1385 阅读 · 0 评论 -
C语言时间转换函数接口的用法
在C语言中,时间转换<time.h>:提供了时间处理的相关函数和类型。常用类型:time_t(表示时间戳,通常是long类型)、struct tm(分解时间结构体)等。函数接口主要涉及以下几个头文件和函数。本文主要介绍这些函数的常用使用方法。原创 2025-09-15 00:30:00 · 1009 阅读 · 0 评论 -
理解char 型数据的核心概念
char 是编程语言中一个非常基础且重要的数据类型,它的名字来源于英文单词 character,意为“字符”。顾名思义,它主要用于表示单个字符。原创 2025-09-15 00:15:00 · 2582 阅读 · 0 评论 -
有符号数和无符号数在内存中的表现形式
计算机硬件本身并不区分有符号数和无符号数——它只看到一串二进制比特。是运行的程序(通过指令)赋予了这串比特“有符号”或“无符号”的含义。计算机的CPU就像一个精通多种语言的翻译。它看到一篇文章(一串二进制数),但它需要你告诉它:“请用中文(有符号)翻译”还是“请用英文(无符号)翻译”。同样的文字,不同的翻译规则,得到的意思完全不同。原创 2025-09-11 00:15:00 · 1361 阅读 · 0 评论 -
负数在计算机内存中的存储方式
负数在计算机内存中通常使用补码(Two's Complement)形式存储,这是现代计算机系统中表示有符号整数的标准方法。下面我将详细解释负数的存储原理,并提供C语言示例来演示这一过程。原创 2025-09-10 00:30:00 · 2209 阅读 · 0 评论 -
补码计算方法详解与C语言实现
补码(Two's Complement)是现代计算机系统中表示有符号整数的标准方法。下面我将详细解释补码的计算方法,并提供一个完整的C语言程序来演示补码的计算过程。理解补码的计算方法对于进行底层编程、处理二进制数据和理解数值计算非常重要。原创 2025-09-10 00:15:00 · 2322 阅读 · 0 评论 -
C语言操作文件函数介绍和使用方法
C语言提供了一套完整的文件操作函数,用于创建、读取、写入和管理文件。这些函数主要在<stdio.h>头文件中定义。通过掌握这些文件操作函数,您可以在C语言中有效地处理各种文件相关的任务,从简单的文本处理到复杂的二进制数据操作。原创 2025-08-27 00:15:00 · 1183 阅读 · 0 评论 -
根据GPS数据计算日出日落时间的C语言实现方法
本文主要介绍根据GPS数据计算日出日落时间的C语言实现方法,根据GPS数据(经纬度和时间)来计算日出日落时间。这里的关键是使用天文算法。原创 2025-08-05 00:15:00 · 1920 阅读 · 1 评论 -
配置 VSCode + Keil 开发环境
将 VSCode 与 Keil MDK 结合使用可以创建一个高效的嵌入式开发环境,结合 VSCode 的优秀编辑体验和 Keil 的编译调试能力。vscode 上的 Keil 辅助工具,与 c/c++ 插件配合使用.能够为 Keil 项目提供 语法高亮、代码片段 的功能,并支持对 keil 项目进行 编译、下载。仅支持 Keil uVison 5 及以上版本仅支持 Windows 平台。原创 2025-08-04 02:30:00 · 3792 阅读 · 0 评论 -
C 标准库 <time.h> 函数详解
本文主要介绍C 标准库 <time.h> 函数,<time.h> 是 C 语言中处理时间和日期的标准库,提供了一系列函数和数据类型用于时间获取、转换和格式化操作提供了一套完整的时间处理工具链,尽管在精度和时区处理上有一定限制,但对于大多数应用场景已经足够。在开发跨平台应用时,应注意不同系统对线程安全和时区支持的差异。原创 2025-07-25 14:13:53 · 2210 阅读 · 0 评论 -
ASCII字符编码标准及字符表
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种基于拉丁字母的字符编码标准,用于计算机和通信设备中的文本表示。ASCII 使用 7 位二进制数(共 128 个字符)来表示字母、数字、标点符号和控制字符。原创 2025-04-27 22:32:28 · 4074 阅读 · 0 评论 -
嵌入式C语言volatile关键字作用
本文主要介绍嵌入式C语言volatile关键字作用,volatile 是一个类型修饰符(Type Qualifier),用于告知编译器:该变量的值可能被程序以外的因素意外修改,因此编译器不应对此变量进行激进的优化。其在嵌入式程序设计中有着非常重要的作用,本文对该关键字做了详细的介绍。原创 2025-03-05 09:56:34 · 1221 阅读 · 0 评论 -
嵌入式C语言中const关键字的深度解析与应用
本文主要介绍嵌入式C语言中const关键字的相关内容和使用技巧,已经在实际应用中要注意的问题,在嵌入式C语言中,const关键字用于声明常量。通过将变量声明为const类型,可以将其值设为常量,使其在程序执行过程中不可改变。详细使用方法参看下文。原创 2025-03-05 09:55:46 · 1455 阅读 · 0 评论 -
嵌入式实时操作系统的临界代码
嵌入式实时操作系统(RTOS)中的 临界代码(Critical Code) 是指需要被 原子化执行 的代码段,即在这段代码执行期间,必须保证其 不可被中断 或 不可被其他任务/中断抢占。临界代码通常用于访问共享资源(如全局变量、硬件寄存器、外设等),以防止并发访问导致的数据不一致或系统故障。原创 2025-03-04 07:27:13 · 668 阅读 · 0 评论 -
嵌入式C语言出栈入栈的概念和使用方法
本文主要介绍嵌入式C语言出栈入栈的相关内容。在嵌入式C语言中,通常使用栈数据结构来实现一些常见的算法和功能。栈是一种后进先出(Last In First Out, LIFO)的数据结构,常用于函数调用、中断处理、表达式求值等场景。栈的入栈操作(push)是将元素插入到栈的顶部;出栈操作(pop)是从栈顶移除一个元素。原创 2025-03-04 07:26:33 · 1636 阅读 · 0 评论 -
嵌入式C语言中volatile关键字的作用
volatile关键字在嵌入式C语言中的作用就是告知编译器,相关变量的值可能会在意料之外的情况下改变,要求编译器在读写这些变量时不进行优化,并确保对它们的访问是实时的。这样可以保证代码的正确性和可靠性。在嵌入式C语言中,volatile关键字的作用至关重要,主要用于处理以下场景:原创 2025-03-03 07:20:39 · 1145 阅读 · 0 评论 -
嵌入式C语言之算数运算
嵌入式C语言中的算数运算包括基本的加减乘除运算,可以使用标准的算术运算符来实现。本文举了一些具体的实例,介绍指针算术计算的方法。原创 2025-02-27 03:00:00 · 476 阅读 · 0 评论 -
嵌入式C语言实现IIR滤波器的设计
本文主要介绍嵌入式C语言实现IIR滤波器的设计,IIR(无限冲激响应,Infinite Impulse Response)滤波器是一种数字滤波器,其输出不仅依赖于当前和过去的输入,还依赖于过去的输出(即包含反馈)。它的数学原理基于差分方程和Z变换,通过极点和零点的配置实现滤波特性。相对于 FIR 滤波器,IIR 滤波器的群延迟较小,从而瞬时响应更短。原创 2025-02-27 04:00:00 · 2209 阅读 · 0 评论 -
嵌入式C语言冒泡排序的原理
本文主要介绍一种最简单的数据排序方法,即:冒泡排序(Bubble Sort),冒泡排序是一种简单的排序算法,通过重复比较相邻元素并交换顺序错误的元素,将较大的元素逐步“冒泡”到数组末尾。笔者通过C语言实现了该算法的代码,并在STM32G4硬件平台上验证了该算法。原创 2025-02-26 04:00:00 · 1094 阅读 · 0 评论 -
嵌入式C语言之FIR滤波器实现详解
FIR(Finite Impulse Response)滤波器是一种数字滤波器,其主要原理是利用有限长度的冲激响应来实现信号的滤波。FIR滤波器的输出只依赖于输入信号的有限个历史值,与IIR(Infinite Impulse Response)滤波器相比,FIR滤波器没有反馈环路,因此对稳定性和实现方便有一定优势。原创 2025-02-26 03:00:00 · 2772 阅读 · 0 评论 -
磁场定向控制 (FOC)模型的C语言实现(STM32G4)
本文主要介绍磁场定向控制 (FOC)的控制原理框架结构,还简要介绍了模型中使用几个模块的数学实现方法,并使用C语言将这些数学模型实现出来,同时在STM32G4平台上对其做验证。原创 2025-02-25 03:00:00 · 4820 阅读 · 0 评论 -
浅析ARM Contex-CM3内核架构
本文主要介绍ARM Contex-CM3相关的知识,包括内核架构,寄存器组,和指令集等内容。原创 2024-04-16 11:24:07 · 4132 阅读 · 0 评论 -
STM32 程序启动全流程解析
STM32是一款广泛使用的嵌入式微控制器系列,具有强大的性能和丰富的外设。在启动编写STM32程序时,通常包括以下步骤,本文对这些步骤实现的功能做了详细的分析,便于了解MCU的启动工作机制。原创 2025-02-18 13:06:01 · 3560 阅读 · 0 评论 -
嵌入式C语言中堆(Heap)和栈(Stack)
本文主要介绍嵌入式C语言中堆(Heap)和栈(Stack)的相关内容,在嵌入式C语言中,堆(Heap)和栈(Stack)是两种不同的内存分配方式。在嵌入式系统中,需要注意堆和栈的使用方式和限制,合理分配内存资源,避免内存泄漏和溢出等问题。原创 2025-02-13 07:39:41 · 1932 阅读 · 0 评论 -
嵌入式C语言的变量和函数存储类型
本文主要介绍嵌入式C语言中的数据变量的类型,包括其数据长度,在内存中的存储方式。还介绍了数据的存储类型的相关内容。原创 2024-05-09 00:15:00 · 988 阅读 · 0 评论 -
详解嵌入式MCU运行时分配的stack和heap
本文主要讲述了嵌入式开发中的stack和heap的概念,还详细比较了它们之间的区别,以及在实际应该过程中注意的问题。原创 2024-05-07 00:15:00 · 2347 阅读 · 0 评论 -
嵌入式C语言之快速排序方法实现原理
本文主要介绍嵌入式C语言之快速排序方法实现原理,并编写源代码实现了快速排序的功能,并编写测试代码验证该函数的功能。原创 2025-02-20 13:04:44 · 799 阅读 · 0 评论
分享