自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ARM 裸机开发 Day03|IMX6ULL 汇编点灯、GPIO 寄存器、内存布局梳理

高压摆率:信号边沿陡峭,适合高速设备 低压摆率:信号变化曲线平缓,适合低速场景。文件传输:FileZilla FTP,Windows 为 FTP 客户端,Ubuntu 开启 FTP 服务,双向同步代码。设置GPIOx组某个引脚中断触发方式(低电平、高电平、下降沿、上升沿):汇编设置栈,C 语言操作寄存器地址,业务逻辑用 C 实现。

2026-09-17 23:09:53 187

原创 ARM汇编学习笔记 Day02

立即数就是直接写在指令里面的常数,前面带个,数值直接编码在指令内部,不用去内存拿数据。比如,这里#0x10就是立即数。这里很容易踩坑,ARM32的指令固定占32位,除去操作码、寄存器编号,留给立即数的位置不多。合法立即数要求:举个例子,#0xFF是没问题的;但像#0x104,拼不出来,就是非法立即数。碰到非法立即数,就不能直接写,得用LDR伪指令去加载。

2026-09-16 23:06:57 277

原创 ARM裸机开发Day01|Cortex‑A7核心概念整理

最近在学习 ARM Cortex‑A7 裸机开发,第一天接触大量架构名词:寄存器、异常向量表、MMU、Cache、NOR/NAND Flash。MMU(Memory Management Unit,内存管理单元)作用:完成虚拟地址 ↔ 物理地址转换,依靠页表完成映射;同时做内存访问权限检查、内存保护。裸机开发:关闭 MMU,程序直接操作物理地址Linux 操作系统 / 驱动开发:必须打开 MMU,每个进程拥有独立 4GB 虚拟地址空间。

2026-09-15 23:23:10 85

原创 51单片机--数字温度传感器 DS18B20

2026-09-14 22:46:41 184

原创 51单片机--UART 通信异步收发器 全双工、串行、异步

2026-09-13 18:30:03 162

原创 单片机DAY2--->GPIO、中断、定时器、PWM

2026-09-12 10:23:11 173

原创 51单片机还不会?快看此篇,一图速通!

2026-09-10 21:13:28 208

原创 Linux 网络编程|一文搞懂 HTTP 协议(附 C 语言极简 Demo

HTTP 属于应用层文本协议,底层依赖 TCP,端口 80;HTTPS = HTTP+SSL/TLS,端口 443。报文分为请求报文、响应报文,结构:行‑请求头‑空行‑Body;\r\n是报文分隔核心。请求方法定义操作语义;状态码快速定位通信故障。keep‑alive实现 TCP 连接复用,提升性能;HTTP 无状态,依靠 Cookie/Token 保存会话。Linux 网络编程可以裸 socket 构造 HTTP 报文,实际项目优先使用 libcurl 库简化开发。

2026-09-03 17:54:06 444

原创 一文啃完 Linux 网络通信:协议栈、套接字、TCP/UDP 全梳理

对比项UDPTCP连接无连接面向连接(三次握手)数据形式数据报字节流可靠性不可靠,丢包乱序可靠,重传确认、流量控制效率开销小,实时高开销大编程模型不需要 connect;服务端 listen‑accept;客户端 connect典型场景直播、游戏、广播文件传输、网页、MQTT。

2026-09-01 22:52:48 328

原创 Linux应用软件编程——线程还不会?快看这篇内容全讲解!

线程是轻量级进程,用来实现程序多任务并发。✅进程:操作系统资源分配最小单位✅线程:CPU 任务调度最小单位线程一定隶属于某个进程,一个进程内部可以创建多个线程。

2026-08-28 20:08:30 326

原创 Linux多任务机制与进程超详细解析(入门必看)

多任务,简单来说就是让操作系统、应用程序具备同时处理多个任务的能力,专业术语称之为并发。日常电脑、手机的操作都是多任务:一边播放音乐、一边运行代码、一边浏览网页,多个程序互不干扰同时运行。Linux实现多任务的两种核心方式多进程:资源独立、稳定性高,操作系统资源分配的基本单位多线程:轻量化、切换开销小,CPU调度的基本单位进程:正在内存中执行的程序,运行过程中会持续占用内存、CPU等系统资源,是动态运行的实体。1. 多任务的核心是并发,Linux通过多进程、多线程实现,进程是系统资源分配最小单位;

2026-08-25 17:54:55 301

原创 Linux 进阶学习笔记:目录IO、常用工具函数与Framebuffer帧缓存详解

帧缓存是显存的抽象设备,系统将屏幕的显存空间映射为设备文件/dev/fb0(默认第一个屏幕)。应用层只需向该设备写入RGB像素数据,即可直接控制屏幕显示,无需适配不同屏幕驱动,兼容性极强。opendir 打开、readdir 读取、closedir 关闭、mkdir 创建,是文件批量操作的基础;2. 格式化函数覆盖控制台、文件、内存字符串场景,sprintf 是数据转字符串的常用工具;3. errno+strerror/perror 是Linux标准错误排查方案,快速定位系统调用异常;

2026-08-24 18:38:48 189

原创 Linux应用软件编程——文件IO(系统调用)

文件 IO 是 Linux 内核提供的文件操作接口,属于系统调用,没有 C 库的用户态缓冲区。open():打开文件,获取文件描述符read():读文件write():写文件close():关闭文件lseek():文件读写位置跳转man 2 open,2 号手册专门存放系统调用。

2026-08-22 23:25:20 146

原创 Linux应用软件编程|文件操作(标准IO)学习笔记

在 Linux 下做应用开发,文件操作是最基础的能力。程序运行时数据放在内存,内存速度快,但程序退出、断电数据就丢失;想要持久保存数据,就要写到外存文件中。内存外存 (硬盘文件)读写速度快读写速度慢掉电 / 程序结束数据丢失掉电数据不丢失,持久存储空间小,成本高空间大,价格低廉一切皆文件。普通文本、图片、视频,甚至鼠标、键盘、显示器、网卡、管道,在系统眼里全部都是文件。

2026-08-21 19:11:29 213

原创 数据结构——队列原理及C语言完整实现

普通顺序数组实现的队列会出现假溢出:数组还有空余位置,但因为 tail 走到数组末尾,无法继续入队。//1.创建循环队列,capacity:实际可存放最大元素数量,数组会多开辟一格。//牺牲一个位置区分空满。队列是线性存储结构,规则:一端插入,另一端删除。//下一个入队存放位置。✅优点:没有容量限制,动态分配内存,不会假溢出。printf(“队列空,无法出队\n”);//最多存放3个有效元素,数组开辟4个空间。✅优点:基于数组,访问速度快,没有内存碎片。

2026-08-20 19:45:54 189

原创 别再死背算法了!冒泡 / 选择 / 插入 / 希尔 / 快排 + 二分查找保姆级教程

复杂度增长速率从小到大: O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!:数组序列必须有序(升序 / 降序) ⏱时间复杂度:O(logn) 💾空间复杂度:O(1):不断取中间下标,将目标值和中间元素对比,缩小查找区间;:每一轮遍历,找到未排序区间最小元素下标,和区间最前面元素交换。$$O(1):常数级,和数据量无关;$$O(n^2):平方级,双层循环。$$O(nlogn):线性对数;$$O(logn):对数级;

2026-08-19 18:38:12 176

原创 面试通关:二叉树核心知识点与手写代码

树的度最大为 2,就是二叉树;左右子树严格区分,不能随意交换。每个结点最多两个孩子:左孩子、右孩子。// 二叉树结点类型int data;// 数据域// 左孩子指针// 右孩子指针} BiNode_t;

2026-08-18 18:20:33 220

原创 C 语言数据结构:双向链表与链式栈超全详解(含完整可运行 API)

单向链表结点只保存后继结点的地址,只能向后遍历;如果想要获取上一个结点,必须从头结点重新遍历,效率很低。双向链表给每个结点增加一个前驱指针,既可以向后遍历,也可以向前遍历。一般把链表头作为栈顶,利用头插、头删模拟压栈弹栈,不需要移动大量元素。提示:链式栈选择头作为栈顶,避免遍历链表尾部,入栈出栈时间复杂度 O (1)。头插压栈,头删弹栈;:底层使用数组实现;分为增栈、减栈、满栈、空栈。每个结点拥有两个指针域,内存开销比单向链表大;链表结点插入(头插、尾插)链表结点删除(头删、尾删)插入、删除结点的时候,

2026-08-17 22:34:25 201

原创 满分实验代码:单向链表综合实操题(增删改查 + 排序 + 内存检测全套)

分三种边界场景:空链表:直接返回错误链表只有 1 个结点:释放唯一结点,头指针置空链表 2 个及以上结点:遍历到倒数第二个结点,释放尾结点,倒数第二个结点后继置 NULL使用malloc在堆区手动申请的内存,使用结束后没有调用 free 释放,程序退出前堆内存无法回收,即为内存泄露。链表操作中最容易泄露的场景:链表使用完毕没有逐个 free 所有结点只释放链表管理头Link_t,忘记释放所有Node_t结点单向链表属于链式存储,内存不连续,依靠指针串联结点,增删效率远高于数组;

2026-08-13 18:28:01 179

原创 Linux帧缓冲五子棋项目开发学习心得

报错。

2026-08-12 21:30:32 194

原创 一次性讲透 C 底层!内存分区 + 位运算无死角

内存管理核心栈自动释放,堆手动 malloc/free;全局 / 静态变量存数据区,生命周期等于程序运行时长动态内存必须判空、用完释放、指针置空,杜绝内存泄漏与野指针位运算核心置 1、清 0、翻转 / 交换、移位替代乘除 2 的幂只支持整型,底层硬件开发、性能优化必备工具。

2026-08-10 17:37:35 332

原创 看不懂C语言结构体指针?这篇笔记帮你彻底打通难点

结构体类型 变量名;两种简写方式:声明结构体时同步定义变量int year;int mon;int day;} mydate;匿名结构体直接定义变量structint year;int mon;int day;} mydate;

2026-08-06 18:24:07 168

原创 救命!分不清数组指针和指针数组,函数指针和指针函数?这篇一次性讲透

基类型 * 数组名[长度];[]优先级高于,变量先与[]结合形成数组;数组内每一个元素都是对应类型的指针;64 位系统单个指针占 8 字节,数组总字节 = 指针大小 × 数组长度。基类型 (*指针名)[数组长度];()强制与变量名绑定,主体为指针;该指针专门指向完整数组指针+1会一次性偏移整个数组的内存大小;指针本身固定占 8 字节(64 位系统),与数组长度无关;arr是数组首元素地址(int*&arr是数组整体地址(数组指针int (*)[N]基类型 * 函数名(形参列表);

2026-08-05 19:55:10 328

原创 零基础也能看懂的 C 语言指针完整教程

基类型 *变量名;基类型:限定该指针指向内存中存储的数据类型(int、char、float、double、void、结构体等):指针类型标识,代表该变量是指针变量变量名:遵循标识符命名规范,推荐p开头(pintpchpmaxint *pint;// 指向int类型的指针char *pch;// 指向char字符的指针float *pf;// 指向浮点数据的指针// 同时定义两个int指针。

2026-08-03 19:04:33 213

原创 零基础吃透 C 语言函数全套语法笔记

返回值类型 函数名(形参列表)函数体;// 函数内部具体逻辑代码函数直接调用自身,或者间接调用自身,就称之为递归调用;递归本质等价于循环结构。返回值类型 函数名(int 数组名[], int len){ // sizeof(数组名) 结果等价于 sizeof(int *),64位系统下为8字节// 数组在函数内的使用方式和外部完全一致 }void print_array(int a[], int len) { // 遍历打印数组元素 }

2026-07-31 18:06:26 344

原创 C语言数组零基础精讲:普通数组+字符数组+排序+查找(附实战代码)

用于存储多个数据类型完全相同的数据的有序、连续内存集合。单一性:数组内所有元素的数据类型完全一致,不可混合存储不同类型数据有序性:元素按照下标顺序依次排列,下标从 0 开始递增连续性:数组在内存中占用一段连续的存储空间,不会分散存储类型说明符 数组名[常量];类型说明符:支持基本数据类型、构造数据类型,不支持void类型,用于限定数组存储的数据类型数组名:严格遵循C语言标识符命名规则(字母、数字、下划线,不能以数字开头,不与关键字重名)常量:代表数组可存储的最大元素个数,不能使用变量定义数组长度。

2026-07-29 19:01:11 228

原创 C语言循环结构一秒通

循环执行的条件:逻辑结果的表达式,表达式结果为真,执行循环体;表达式结果为假,跳出循。循环中的三个表达式都可以被省略,但是循环初始条件,让循环执行的判断条件及让循环。,当循环体只有一行语句时可省略,但建议不要省略;循环中三个表达式的位置,不能互换;死循环,表示循环体一直被执行。让循环趋于结束的条件:循环体内。循环中的循环体,至少要执行一次。(表达式)后面必须要加分号。的结果为真,执行循环体;后面不要加分号,加分号代表。的结果为假时,跳出循环。趋于结束的条件必须要有。:让循环趋于结束的条件。

2026-07-27 18:17:18 195

原创 C语言if、switch语句一秒通!

2026-07-25 18:47:12 219

原创 C语言常用输入输出函数,一张图就搞懂

2026-07-24 18:59:25 157

原创 C 语言筑基必备|前期语法知识点一网打尽

2026-07-23 18:32:23 70

原创 C语言零基础入门核心知识点整理

示例1:二进制 0011 0101 转十进制 = 1×2⁰+1×2²+1×2⁴+1×2⁵ = 53。示例3:十六进制 0x123 转十进制 = 3×16⁰+2×16¹+1×16² = 291。signed short:范围 -2¹⁵ ~ 2¹⁵-1(-32768~32767)示例2:八进制 0123 转十进制 = 3×8⁰+2×8¹+1×8² = 83。存储结构:1位符号位 + 11位指数位 + 52位尾数位,精度12-16位。存储结构:1位符号位 + 8位指数位 + 23位尾数位,精度6-8位。

2026-07-22 19:25:06 382

原创 Linux 零基础极简入门笔记(超精简版)

查看文件 ls -l 详细信息 | ls -a 显示隐藏文件。Ctrl+Shift+V:外部粘贴代码。:~/20250905$ 命令提示行。Linux 是操作系统,文件管理为。命令 [参数] [文件]:进入插入模式(写代码)头文件、main 顶格写。模块之间空一行,整洁易读。:移动文件 / 重命名。大括号内部缩进 Tab。:临时获取管理员权限。第2组:同组用户权限。

2026-07-21 19:04:44 348

空空如也

空空如也

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

TA关注的人

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