自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 嵌入式 C 语言入门:递归与变量作用域学习笔记 —— 从概念到内存特性

本文介绍了嵌入式C语言中递归函数和变量作用域的核心概念。递归通过函数调用自身简化复杂问题,但需注意基例条件和栈溢出风险。变量作用域分为局部变量和全局变量,全局变量可通过extern跨文件使用,而static能限制作用域避免冲突。静态变量(全局/局部)存储在全局数据区,具有持久生命周期和自动初始化特性。静态局部变量能保留状态,可替代全局变量实现计数功能。在资源受限的嵌入式系统中,需谨慎使用递归并合理管理变量作用域,以提高代码可靠性。这些知识为后续多文件编程和硬件控制打下基础。

2025-08-02 15:50:13 807

原创 嵌入式 C 语言入门:函数封装与参数传递学习笔记 —— 从定义到内存机制

本文介绍了C语言中函数的基本概念与应用,重点讲解了如何通过函数封装重复代码以提高效率。主要内容包括:1)函数的定义与声明,包括无参数、无返回值函数和带参数、带返回值函数的实现;2)参数传递的两种方式(值传递与地址传递)及其区别,通过实例说明指针在修改原变量时的作用;3)函数在嵌入式开发中的实用价值,如硬件初始化和数据处理等。文章还解释了局部变量在栈中的存储机制,帮助读者理解参数传递原理,为后续学习递归等高级函数用法打下基础。

2025-08-01 15:09:59 804

原创 嵌入式 C 语言入门:循环结构学习笔记 —— 从语法到实用技巧

本文介绍了C语言中三种循环结构(while、do-while、for)的语法、执行逻辑及嵌入式应用场景。while循环先判断后执行,do-while至少执行一次循环体,for循环整合初始化、条件和更新表达式。通过实例展示了如何计算数字和、字符串操作等基础应用,并对比了while与do-while在处理空字符串时的差异。文章还讲解了break和continue对循环的控制作用,以及如何结合if语句提取字符串中的数字。在嵌入式开发中,这些循环结构常用于硬件控制(如LED闪烁)和数据处理任务。

2025-07-31 14:20:59 846

原创 嵌入式 C 语言入门:分支结构(if/switch)的用法与硬件控制实践

本文聚焦 C 语言分支结构(if 与 switch)的用法及嵌入式应用。详解 if 语句的条件判断逻辑,通过数字位数判断案例展示其分支执行特性;解析 switch 语句的多分支选择机制,结合实例说明 break 的作用与穿透现象。重点演示如何用这两种结构控制硬件,如实现 LED 状态翻转,帮助嵌入式入门者掌握从语法到硬件控制的落地方法,为后续循环结构学习奠定基础。

2025-07-30 22:25:01 1027

原创 关系与逻辑运算 —— 寄存器操作的 “入门钥匙”

这篇笔记系统梳理了嵌入式开发中的关系运算和逻辑运算。关系运算(如>、==)用于比较值的关系,结果为真(1)或假(0)。逻辑运算包括按位运算(&、|、^、~、<<、>>)和条件组合运算(&&、||)。按位运算可对寄存器进行清零、置1和翻转位操作,而逻辑运算常用于条件组合判断。文中通过代码示例演示了各种运算符的用法,并区分了易混淆的按位与赋值(&=)和逻辑与(&&)操作。这些基础知识是硬件寄存器操作和状态判断的重要基础。

2025-07-27 23:41:46 843

原创 用 Keil5 理解 C 语言结构体(三):结构体与硬件寄存器的结合

摘要: 本文介绍了如何利用结构体映射硬件寄存器,实现嵌入式开发中的高效硬件操作。通过分析GPIO外设的寄存器地址分布(基地址+偏移量),定义与之匹配的结构体,确保成员偏移量与寄存器地址一一对应。使用volatile unsigned int修饰成员,防止编译器优化并保证32位宽度。通过结构体指针指向硬件基地址(如0x40021400),可直接操作寄存器(如p->odr),结合位运算控制硬件状态(如LED点亮)。该方法使代码更贴近硬件手册,提升可维护性。后续将探讨逻辑运算在寄存器操作中的关键作用。 关键

2025-07-26 18:26:05 635

原创 用 Keil5 理解 C 语言结构体(二):结构体指针的定义与访问

本文介绍了结构体指针的基础概念与应用。通过类比普通指针,阐明了结构体指针存储结构体首地址的特性,并通过代码验证其地址关联关系。重点讲解了结构体指针访问成员的特殊方式——使用->运算符,其本质是"基地址+偏移量"的自动计算。文章通过实例对比,展示了p->成员与结构体变量.成员的等效性,并指出结构体指针在传递大型数据时的性能优势。最后强调结构体指针在嵌入式开发中处理复杂数据结构的重要价值,为后续学习打下基础。

2025-07-25 20:25:27 1100

原创 用 Keil5 理解 C 语言结构体(一):定义、存储与初始化

本文介绍了C语言中结构体的概念与应用。通过对比数组在处理异构数据时的局限性,阐明了结构体在整合不同类型数据方面的优势。结构体能够将多个数据类型打包成整体(如学生信息),并通过点运算符直观访问成员。文章详细讲解了结构体的定义、内存对齐特性及三种初始化方法,并展示了结构体数组的用法。结构体在嵌入式开发中尤为重要,可用于描述传感器、外设等复杂对象。后续将探讨结构体嵌套和指针等进阶内容。

2025-07-24 16:14:57 950

原创 用 Keil5 理解 C 语言数组(三):多维数组与指针数组

本文介绍了两种高效管理复杂数据的C语言结构:多维数组和指针数组。多维数组通过行列结构组织层级数据(如坐标点),便于访问复合信息;指针数组则存储指针变量,在字符串处理中尤为实用,通过保存字符串首地址实现高效访问。文章通过代码示例演示了它们的定义、使用方式和典型应用场景,为处理嵌入式开发中的复杂数据提供了基础。后续将介绍更灵活的结构体,用于组织不同类型的数据。

2025-07-23 18:32:58 585

原创 用 Keil5 理解 C 语言数组(二):地址关联与访问特性

本文深入解析了指针与数组的内在联系及其在嵌入式开发中的应用。关键点包括:①数组名本质是首地址,可直接赋值给同类型指针;②通过指针下标或偏移量均可访问数组元素,两者等效;③指针偏移会根据数据类型自动调整(如int型指针+1实际偏移4字节)。通过代码实例展示了如何利用指针灵活操作char和int数组,强调了类型适配特性对精准访问数据的重要性。这些原理为处理传感器数据、缓冲区等场景提供了基础,后续将探讨指针数组与数组指针的进阶应用。

2025-07-22 12:11:02 572

原创 用 Keil5 理解 C 语言数组(一):连续存储与初始化特性

摘要: 本文介绍了数组在嵌入式开发中的基本特性和初始化方式。数组作为连续存储空间,可通过下标访问元素,其大小由元素类型和长度决定。重点解析了字符串初始化(如char b[10] = "abc"自动补'\0')与字符列表初始化(如{'a','b','c'}需手动添加'\0')的区别,并通过调试实例演示了字符串打印规则(以'\0'为终止符)。此外,对比了char与int数组的存储空间差异,并指出数组长度不足时的截断风险。文章为后续结合指针操作数组奠定了基础,适用于传感器数据存储、串口字符串处

2025-07-21 18:13:38 799

原创 用 Keil5 理解 C 语言指针(三):指针类型与位运算实践

本文探讨了嵌入式开发中指针类型选择与位运算的协同应用。针对32位单片机硬件操作,分析了使用int *指针直接操作32位寄存器的优势,相比char *指针可避免多次分步操作。重点解析了位运算(与、或、移位等)的原理及其在寄存器控制中的关键作用,通过GPIO控制LED实例,展示了如何通过位运算精准修改特定位而不影响其他引脚状态。文章强调指针确定操作地址、位运算限定操作范围的硬件控制范式,为后续数组与指针配合应用奠定基础。

2025-07-16 11:33:44 863

原创 用 Keil5 理解 C 语言指针(二):指针的操作与硬件控制

本文探讨了指针在嵌入式开发中的关键作用,从基础操作到硬件控制。首先通过变量地址操作演示了指针修改数据的原理,强调类型匹配的安全性。随后重点阐述了指针如何直接访问硬件寄存器地址,以STM32单片机为例,详细推导GPIO控制寄存器的地址计算方法,并实现LED闪烁控制。文章通过Keil调试和代码实例,展示了指针作为软硬件桥梁的核心价值,即使初学者借助工具也能完成硬件控制,为后续深入学习库函数开发奠定基础。

2025-07-15 09:58:02 669

原创 用 Keil5 理解 C 语言指针(一):指针的引入

这篇笔记从单片机硬件原理出发,探讨了变量存储与指针的本质。32位单片机的32根地址线决定了所有变量地址均为32位(4字节),指针的核心功能就是存储这些地址。通过实验验证了不同类型指针的大小均为4字节,与变量类型无关。文章用内存示意图直观展示了变量存储机制,说明指针通过存储变量首地址实现对内存的访问。最后指出这些硬件知识是理解指针操作的基础,为后续探讨指针用法做铺垫。文章结合硬件架构与代码实践,帮助读者建立对地址和指针的具象认知。

2025-07-13 11:55:09 1056

原创 用 Keil5 理解 C 语言变量(二):赋值逻辑、数据传递与运算特性

摘要:本文记录了嵌入式C语言学习中的变量赋值、数据传递与运算实验。通过串口调试验证了不同类型变量(char/int)的赋值与输出特性,揭示了数据截断、ASCII编码转换等底层机制。重点分析了整数除法与强制类型转换的区别,并解析了自增/自减运算符的执行顺序。实验表明:变量存储范围决定数据保留能力,输出格式控制数据呈现形式。这些基础概念为后续指针学习奠定了基础。硬件配置与代码示例同步提供,适合嵌入式初学者参考实践。(150字)

2025-07-11 14:40:26 999

原创 用 Keil5 理解 C 语言(一):变量内存和原码反码与补码

本文通过Keil5调试实践,探讨了C语言变量内存分配与数据编码问题。实验验证了char和int类型变量的存储空间差异(1字节和4字节),分析了变量赋值超出范围时的截断现象。重点讲解了原码、反码和补码的转换原理,通过-1+1的计算示例演示了补码在计算机运算中的必要性。文章还展示了如何在Keil中观察变量内存地址,并解释了符号位对数值解析的影响。最后指出,理解这些底层机制对嵌入式开发至关重要,为后续学习奠定了基础。

2025-07-09 12:33:24 944

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除