- 博客(25)
- 收藏
- 关注
原创 LCD 显示原理与像素点详解
LCD(Liquid Crystal Display,液晶显示器)是嵌入式开发中最常见的显示设备之一。理解 LCD 的工作原理、像素点与显存的关系,是进行屏幕驱动开发的基础。本文将从像素点、分辨率、颜色格式、显存映射到 LCD 时序信号,逐步拆解 LCD 显示的核心概念。以 RGB888 为例,R、G、B 三个通道的取值范围均为 0-255。屏幕尺寸以英寸(inch)为单位,指屏幕左上角到右下角之间的对角线距离,屏幕分辨率是指横向像素点个数与纵向像素点个数的乘积,例如。对应屏幕左上角的像素点。
2026-09-28 20:08:07
168
原创 ARM day07 定时器与 UART 学习
示例 115200:UBIR = 999,UBMR = 43402。分母总和:UBMR + 1 = 43403,UBIR / 1000 = 0.999,43403 + 0.999 = 43403.999,配合 80M 参考时钟得到 115200 波特率。我们写的 getc() 就是轮询接收:不断查询接收状态位 USR2 bit0,判断是否收到字节,收到之后读取 URXD 寄存器。常用配置:115200-8-N-1,即 115200 波特率,8 位数据位,无校验(N-None),1 位停止位。
2026-09-22 18:08:12
131
原创 iMX6ULL ARM裸机 时钟与启动汇编学习
上电复位 → 汇编 _reset_handler → 设置 IRQ 栈 → 设置 System 栈 → 打开内核 IRQ 总开关 → BSS 清零 → 开启 I-Cache → 设置 VBAR 向量基地址 → 跳转 C 语言 main() → clock_init() 配置 PLL/PFD/根时钟、开启外设时钟 → 初始化外设、配置 GIC 中断 → 运行业务代码;PFD 计算公式:PLL2 (528M) 各路 PFD 输出:PFD = 528 × 18 / PFD_FRAC,FRAC 取值 12~35;
2026-09-21 17:28:14
168
原创 IMX6ULL ARM 裸机开发学习总结(Day03-Day04)
忘记开启外设时钟,GPIO 寄存器读写无效;引脚没有配置 IOMUXC 复用为 GPIO 功能;C 语言操作寄存器不加volatile,编译器优化导致硬件无反应;Makefile 外部工具相对路径错误,提示命令找不到;ld链接输出 elf 文件名与objcopy读取 elf 文件名不一致,生成空 bin 文件;烧录 SD 卡设备号写错,破坏本地磁盘数据。
2026-09-18 17:52:28
172
原创 ARM 架构与单片机基础学习总结
ARM 公司专注于 RISC 架构 CPU 的设计,采用 IP 授权模式与半导体厂商合作(如意法半导体的 STM32 系列芯片,搭载 ARM 设计的内核)。
2026-09-16 22:02:23
150
原创 51 单片机硬件知识点思维总结
一、频率与时间单位换算频率与时间互为倒数:例:2.1GHz,周期 T = 1 / (2.1 × 10⁹) ≈ 0.5ns51 常用晶振11.0592MHz:专门用于串口,方便得到标准波特率。
2026-09-10 18:59:49
150
原创 Linux 应用软件编程完整学习总结
文件用完必须 close,否则文件描述符泄露;标准 IO 缓冲区会导致数据没有立刻写入磁盘。fork 之后父子进程变量拷贝,互相独立,不能直接通信;线程共享全局变量,访问临界资源必须上锁。僵尸进程一定要回收;线程默认非分离属性,必须 join 或者 detach,否则线程资源泄露。共享内存速度最快,但没有同步机制,业务层必须做互斥保护。网络编程端口、IP 必须转换成网络大端字节序,否则通信异常。信号是异步通知,不能携带大量业务数据;SIGKILL 不能捕获、不能忽略。
2026-08-31 23:22:00
335
原创 Linux 进程与多任务编程学习总结
进程是程序的一次运行实例。程序是磁盘上静态的可执行文件;进程是操作系统分配资源(内存、CPU、文件描述符)的动态实体。PID:进程 ID,操作系统用来唯一标识进程。PPID:父进程 ID,标识是谁创建了当前进程。PCB(进程控制块):内核中保存进程全部信息的数据结构,包含 PID、PPID、内存映射、文件描述符、信号掩码、进程状态等。隐式声明警告:C 语言老标准,如果调用函数之前没有写函数声明或者头文件,编译器报这个警告。虽然可以运行,但高版本 gcc 会警告,工程中必须修复。函数头文件。
2026-08-28 22:42:56
393
原创 Linux 应用软件编程学习总结
对比项标准 IO文件 IO(系统调用)操作句柄FILE* 文件流指针int 文件描述符 fd来源C 标准库函数Linux 内核系统调用缓冲区自带用户态缓冲区,减少内核切换,效率高无用户层缓冲区,实时性高可移植性强,跨平台仅 Linux/Unix,可移植差适用场景普通文本、大文件读写硬件设备、驱动、需要实时读写场景。
2026-08-25 18:43:41
369
原创 Linux 应用软件编程 - 标准 IO 学习总结
w/w+ 打开会清空文件,修改原有文件用 r+。fread/fwrite 返回值是元素个数,不是字节数。fseek 只能定位,不能做文件插入,只能覆盖。文件用完必须 fclose,防止资源泄露。char 单字符;char[] 字符数组字符串;char* 字符串指针,不要写。fgets 最多读 size-1 字节,留位置放字符串结束符 '\0'。argc 参数计数包含程序名本身。
2026-08-21 18:48:32
304
原创 数据结构与算法完整学习总结
删除 / 插入结点时,要同时修改 ppre、pnext 两个指针域,容易写错指针顺序。:单向链表实现,用链表头做栈顶,入栈出栈都是头插、头删,效率 O(1)。API:创建栈、入栈、出栈、判空、获取栈顶元素、清空栈、销毁栈。C 语言:结构体、指针、malloc/free 动态内存分配。:相遇点指针、头指针同时一步一步走,再次相遇点就是环入口。API:创建、入队、出队、判空判满、获取队头元素、销毁。:符号匹配校验、回文字符串、程序回溯、撤销操作缓存。API:创建、插入、删除、查找、修改、遍历、销毁。
2026-08-20 19:34:25
584
原创 数据结构学习
数据结构是存储具备特定关系数据的集合,描述数据的组织、存储方式;程序设计 = 数据结构 + 算法。结点结构体 Node_t数据域data:存储业务数据;指针域pnext:存下一个结点地址,尾结点pnext=NULL。链表管理对象 Link_tphead:链表头结点指针;clen:实时记录链表结点总数。int data;}Node_t;int clen;}Link_t;业务数据结构体Data_t:自定义存储内容(示例:学生姓名、年龄、分数);结点DNode_tdata数据域 +ppre。
2026-08-16 21:26:42
203
原创 基于Linux环境的C语言五子棋项目学习总结
五子棋是规则简洁、普适性强的经典双人策略棋类游戏。本次项目以 C 语言为开发基础,在 Ubuntu Linux 系统环境下完成可视化五子棋游戏的全流程开发,目标是实现棋盘渲染、双人交替落子、合法性校验、自动胜负判定、结果弹窗反馈等完整游戏功能。项目以实战为导向,一方面巩固 C 语言二维数组、函数封装、逻辑控制等核心语法知识,另一方面熟悉 Linux 操作系统的基础操作、程序编译与调试方法、图形化库的环境配置与调用,完成从语法学习到完整项目落地的能力跨越。
2026-08-12 17:33:11
163
原创 C语言指针学习
格式:基类型 *变量名;基类型:指针指向空间存储的数据类型(int/char/float/void 等),决定解引用时读取多少字节。:类型标识,说明该变量是指针,不是普通变量。示例int *pint;// 指向 int 类型的指针char *pch;// 指向 char 类型的指针// 同时定义两个 int 指针。
2026-08-05 20:53:22
148
原创 C语言学习总结
内存每字节拥有唯一编号,编号叫地址;指针 = 地址。指针变量:专门存放内存地址的变量,64 位系统固定占 8 字节,32 位占 4 字节。基类型 *指针名;基类型决定解引用时读取多少字节(int读 4 字节,char读 1 字节)。
2026-08-03 19:16:24
229
原创 C语言函数学习
返回值类型 函数名(形参列表)函数体;返回值支持等基础类型、构造类型;void空类型:函数执行完毕无返回结果,可省略return或写return;;非void函数必须用return返回对应类型值,否则返回随机垃圾值。函数名遵循标识符命名规则,建议见名知意,多用动宾命名(print_star形参列表数据类型 形参名, 数据类型 形参名...;作用:函数执行依赖的外部条件,仅函数内部有效。函数直接 / 间接调用自身,本质等价循环。逻辑;
2026-07-31 18:54:15
181
原创 C语言字符型数组、二维数组、函数学习
char 数组名[常量];占用 32 字节内存作用:存储单个 / 多个字符,存储字符串必须预留'\0'结束符返回值类型 函数名(形参列表) { 函数体;返回值:int/char/float/double/void;void代表无返回值函数名:标识符,见名知意,动宾命名(get_maxprint_arr类型 变量名, 类型 变量名,函数执行所需外部条件。
2026-07-30 18:50:40
228
原创 C语言基础学习-循环结构
条件不成立,退出循环执行后续代码。表达式 2:循环判断条件,结果为真(非 0)执行循环体;表达式 3:更新变量,让循环逐步趋于结束,每次循环体执行完后运行。循环头部(for/while)后误加分号,导致循环体空执行;为真 → 执行循环体 → 执行表达式 3 → 回到步骤 2。控制循环终止的更新代码写在循环内部。为假 → 跳出 for 循环,执行循环外代码。初始化写在循环外部,变量更新写在循环体内。,加分号代表循环体为空语句,逻辑失效。末尾禁止加分号,加分号会造成空循环。忘记更新循环变量,造成无限死循环;
2026-07-27 18:40:10
291
原创 C 语言流程控制学习
条件成立执行语句 1,不成立执行语句 2。要点:if 可单独存在,else 不能脱离 if 单独使用;if 后不能加分号(会截断语句)。程序自上而下、逐行依次执行,无跳转、无判断。示例流程:输入三角形三边 → 计算周长 → 计算半长 → 计算面积 → 输出结果。根据表达式真假,选择执行不同代码块;条件为真执行大括号代码,为假直接跳过。
2026-07-25 18:50:38
418
原创 c语言基础学习
采用科学计数法存储(符号位 + 指数位 + 尾数位)。C语言数据类型主要分为:基本类型、构造类型、指针类型。开头的格式控制符时,会替换为对应变量的值。用于向终端打印内容,遇到。
2026-07-22 18:53:21
323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅