- 博客(28)
- 收藏
- 关注
原创 嵌入式开发基础学习笔记(pwm spi)
SPI(串行外设接口)是一种高速、全双工、同步的串行通信总线。I.MX6U 自带的 SPI 外设被称为。I.MX6U 的 PWM 外设结构包含一个 16 位自增计数器和一个 4x16 的 FIFO 队列。I.MX6U 的 ECSPI 支持主/从模式,本次实验通常使用。的一种技术,常用于控制电机速度、灯光亮度(背光)等。PWM(脉冲宽度调制)本质上是通过数字手段模拟。
2026-01-29 21:02:40
818
原创 嵌入式开发基础学习笔记(I2C 通信协议与 ADC 模数转换)
I2C(Inter-Integrated Circuit)是由飞利浦公司开发的同步串行半双工通信总线,广泛应用于嵌入式系统中与各类传感器和存储设备的通信。:IMX6ULL在12位模式下,基准电压3.3V时,能识别的最小电压约为 3.3V/4096≈0.8mV3.3V/4096≈0.8mV。同时,根据应用场景合理选择分辨率,平衡精度需求与系统资源消耗。函数正是按照上述时序实现的,先写入地址,再通过Repeated Start切换为读模式。,是嵌入式系统中连接模拟世界与数字世界的关键桥梁。
2026-01-27 17:56:32
695
原创 嵌入式开发基础学习笔记(RGB LCD 驱动开发)
LCD 显示一帧图像的过程类似于“画图”,电子枪从左到右、从上到下扫描像素点。为了锁定有效的像素数据,需要设置特定的时序参数(包含“黑边”时间)。eLCDIF 的工作频率需要根据屏幕参数精确配置。帧时序决定了每一帧(画面)的扫描过程。I.MX6U 的 LCD 控制器称为。行时序决定了每一行的扫描过程。在代码中,需要初始化。
2026-01-27 17:46:03
1113
原创 嵌入式开发基础学习笔记(LED实验C语言实现、蜂鸣器实验、SDK裸机驱动、链接脚本、BSP工程管理)
LED点灯需依次配置时钟、复用、引脚属性、方向、电平,确保硬件与软件逻辑一致。MEMORY {FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1M // ROM区域RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 256K // RAM区域SECTIONS {.bss : {// BSS段起始地址符号*(.bss)*(COMMON)// BSS段结束地址符号C代码引用寄存器操作本质。
2026-01-20 20:43:20
1127
原创 嵌入式学习基础笔记(51)
从机地址(1字节) + 功能码(1字节) + 数据(N字节) + CRC校验(2字节)知识点关键内容备注接线方式TXD-RXD交叉连接单片机与PC通信必须交叉波特率设置使用定时器1模式2生成11.0592MHz晶振计算方便工作方式方式1最常用8位UART,波特率可变中断处理TI和RI标志必须软件清零防止重复中断数据帧起始位+数据位+校验位+停止位完整的数据格式。
2026-01-15 23:28:47
920
原创 嵌入式基础学习(硬件)(51)
核心概念:以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统特点:专用性、实时性、可靠性、低功耗、小型化概念类别关键点记忆技巧MCU vs CPUMCU集成度高,CPU只负责运算"MCU=单片机,CPU=电脑心脏"共阳极LED阳极接VCC,阴极接引脚,低电平点亮"共阳:高电平不亮,低电平亮"动态显示利用视觉暂留,快速切换显示"轮流显示,骗过眼睛"位运算与(&)清0,或()置1,异或(^)翻转"与0清0,或1置1"
2026-01-12 23:17:25
967
原创 嵌入式开发基础学习笔记(线程)
共享资源、高效执行、支持三方库(pthread/clone/posix):信号量初始值需根据场景合理设置(如生产者-消费者模型中缓冲区大小)线程共享进程资源(内存、文件描述符等),同时拥有私有栈空间。参数:线程ID指针、属性(默认NULL)、回调函数、参数。字符串/结构体:通过堆区内存传递,需注意生命周期管理。解决方案:资源有序分配、超时检测、死锁预防算法。:进程是资源分配最小单位,线程是执行最小单位。:控制资源访问顺序(生产者-消费者场景):通过互斥锁或信号量同步访问共享资源。
2025-12-18 13:56:53
399
原创 嵌入式开发基础学习笔记(进程)
一、进程基础概念进程定义动态概念:程序执行的过程,包含程序计数器、寄存器、内存状态等运行时信息包含资源分配(内存、CPU调度)和独立运行单元PCB(进程控制块)是进程存在的唯一标志,Linux中对应结构体进程与程序的区别特征程序(静态)进程(动态)存储位置硬盘(代码+数据集合)内存(代码段、堆、栈、数据段)生命周期永久存在随创建而产生,随终止而消亡并发性无支持并发执行资源占用无占用CPU、内存、IO等资源示例a.out文件正在运行的a.out实例进程状态。
2025-12-18 13:56:20
731
原创 嵌入式开发基础学习笔记
核心模块:用户/组管理、文件操作、错误处理、开发工具、终端交互。关键点:通过系统调用与标准库结合实现功能,注重错误处理与资源释放。应用场景:系统级程序开发、脚本编写、终端界面美化。
2025-12-16 19:39:42
305
原创 嵌入式开发基础学习笔记
Dennis Ritchie于1975年为UNIX系统设计的IO库对文件IO的封装,提供缓冲机制支持跨平台(任何支持ANSI C的系统)包含文本流(ASCII编码)和二进制流两种模式。
2025-12-16 19:38:53
231
原创 嵌入式开发基础学习笔记
总节点 n=n0+n1+n2(n1是度为 1 的结点数),边的数量 n−1=2n2+n1(每个度 2 结点贡献 2 条边,度 1 贡献 1 条),联立消去 n得 n0=n2+1。:对含 n个结点的二叉树按“层序”编号(从上到下、从左到右),若编号 i(1≤i≤n)的结点与“同深度满二叉树的编号 i结点”位置完全一致,则为完全二叉树。含 n个结点的完全二叉树,深度为 ⌊log2n⌋+1(或通过换底公式 log2logn+1近似)。:所有结点只有左子树(左斜树)或只有右子树(右斜树)。
2025-12-14 01:56:24
860
原创 嵌入式开发基础学习笔记
定义:限定仅在表尾(栈顶) 进行插入(入栈)和删除(出栈)操作的线性表。特性先进后出(LIFO)后进先出。应用场景:递归调用(保存现场)、回溯问题(路径记录)、优先级调度(高优先级先出)。定义:允许在一端(队尾)插入另一端(队头)删除的线性表。特性先进先出(FIFO)后进后出。应用场景:缓冲(如IO速度不匹配时暂存数据)、任务调度(按顺序处理请求)。
2025-12-14 01:50:28
838
原创 嵌入式开发基础学习笔记
定义:解决特定问题的有限指令序列,每条指令表示一个或多个操作。特征输入输出:输入可选(0个或多个),输出必须有(至少1个);有穷性:步骤有限自动结束(非死循环),每步可在接受时间内完成;确定性:同一输入→唯一输出;可行性:每步操作可实现(如加减乘除、逻辑判断)。定义:零个或多个数据元素的有限序列,内存空间位于堆区(生命周期由mallocfree控制)。ADT示例(通用数据类型DATATYPEtypedef struct person { // 数据元素(含数据项)char sex;int age;
2025-12-01 21:36:22
678
原创 嵌入式开发基础学习笔记
不能直接返回栈上局部变量的地址(函数结束后栈帧销毁,地址无效);指针是C语言的“间接访问神器”,地址传递是被调函数修改实参的关键;指针函数需注意返回地址的有效性,函数指针实现灵活的回调逻辑;:降低耦合度,实现回调函数(运行时确定调用的函数)。:需修改实参内容时(如数据交换、数组修改)。给被调函数的形参,形参是实参的“复制品”;传给形参(形参为指针),形参通过解引用(,类型为“去掉函数名的函数签名”(如。:存于栈区,函数返回后地址失效(如。:被调函数修改形参不影响实参;段(只读),返回其地址有效(如。
2025-11-20 20:51:03
571
原创 嵌入式开发基础学习笔记
1.定义语法基类型* 指针名(如int* p;char* q;•int* p, q中,p是int*q是int仅修饰指针名)。2.初始化要求•未初始化的指针是野指针(存储随机地址或已释放内存,易导致程序崩溃);•正确初始化:用NULL(即(void*)0,表示空指针,不能读写)或有效地址(如int* p=#
2025-11-18 18:24:31
304
原创 嵌入式开发基础学习笔记
1. 预处理流程预处理(处理指令)→ 编译(生成汇编)→ 汇编(生成.o)→ 链接(合并库函数)。2. 宏定义(#define•无参宏:定义常量(如•宏名大写(区分变量);•文本替换(无计算/类型检查);•末尾无分号(避免替换错误)。•带参宏(a):(b));•与函数对比:维度带参宏函数类型检查无有(参数类型匹配)成本低(文本替换)高(调用开销)代码体积大(展开后重复)小(复用函数体)
2025-11-17 20:45:10
337
原创 嵌入式开发基础学习笔记
1.编译运行流程:C源文件(如1.c)经gcc编译生成可执行文件(如A.out),运行时加载到内存执行。2.内存分区•栈区(~8M):存局部变量、函数参数、返回地址,随函数结束自动释放。•堆区:动态内存区(需mallocfree控制),由程序员管理生命周期。•数据段•.data:初始化的全局/静态变量;•.bss:未初始化的全局/静态变量(系统默认初始化为0);•.rodata:只读字符串常量(不可修改)。•文本段:存程序执行代码(机器指令)。•共享区。
2025-11-17 00:26:52
271
原创 嵌入式开发基础学习笔记
char 数组名[长度];(长度需预留'\0'的空间,即字符串长度+1)代码示例// 可存9个字符 + 1个'\0'// 隐式定长:自动计算为3('H','i','\0')// 初始化为全0(安全清零,避免脏数据)
2025-11-12 19:11:12
328
原创 嵌入式开发基础学习笔记
语法类型名 数组名[整型常量]要求:整型常量≥0(表示元素个数),不能是void;int a[5];(定义5个int类型元素的数组);int a[2+4];(用表达式指定长度,结果为6)。
2025-11-10 18:08:43
329
原创 嵌入式开发学习笔记
返回值:读取到的字符的ASCII码值;:避免在格式字符串中加入额外字符(如\n),否则可能导致输入阻塞;的注意事项(变量取地址、少用非控制字符),规避输入风险。返回值:成功写入终端的字符的ASCII码值;功能:从终端读取格式化输入,存储到变量中。(需传入字符的ASCII码或字符常量,如。功能:从终端读取一行字符串(包含空格);返回值:成功读取的变量个数;风险:不检查缓冲区大小,易导致溢出,\t:制表符(相当于4个空格);功能:向标准终端(屏幕)输出。:除字符串外,所有变量都需加。(右对齐,不足补空格);
2025-11-06 18:17:23
397
原创 嵌入式开发基础学习笔记
:算术运算符有固定计算顺序(如先乘除后加减),影响表达式结果。✅ 掌握赋值运算符的左值/右值规则,避免常见赋值错误。是临时结果,不是变量,无法接收赋值)。计算(算术运算符以左结合为主)。(右值是表达式,结果赋给左值变量。单目运算符:仅需1个操作数(如。(简化“先运算再赋值”逻辑)。(定义变量时赋初值,仅一次);双目运算符:需2个操作数(如。三目运算符:需3个操作数(如。(可修改的内存空间别名);:赋值运算符左侧,必须是。:赋值运算符右侧,可是。:同等优先级下,默认。除数不能为0,否则触发。
2025-11-06 18:12:25
219
原创 嵌入式开发基础学习笔记
:每4位一组(不足补0),对应十六进制字符(0-F)。合法字符:字母、数字、下划线(首字符非数字)。±1.8×10³⁰⁸(15-16位有效数字):每3位一组(不足补0),对应八进制数字。±2×10⁹(约-2³¹ ~ 2³¹-1)翻译为汇编指令(与CPU逻辑门一一对应)±3.4×10³⁸(6-7位有效数字):辗转相除法(除2取余,倒序排列)。绑定库函数与目标文件,生成最终程序。生成二进制目标文件(机器码雏形)(寄存器)(控制变量生命周期)。-128 ~ 127(有符号)(枚举)(组合数据类型)。
2025-11-05 01:02:06
412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅