- 博客(34)
- 收藏
- 关注
原创 【无标题】
定义:将外部低频晶振(IMX6ULL 为 24MHz)倍频为芯片内部所需高频时钟的核心电路。作用:频率倍增,提供 CPU、总线、外设的高频时钟源;相位锁定,输出稳定、低抖动的时钟信号定义:时钟树中的频率 “减速器”。作用:对高频时钟进行整数分频(输出 = 输入 / N),将高频时钟降至外设可接受的频率(如 66MHz→1MHz)。特点:IMX6ULL 定时器(EPIT/GPT)内置12 位预分频器,分频范围广(1~4096)。能分频也能倍频。
2026-03-30 19:48:58
211
原创 汇编相关知识
时,可以通过通用寄存器R0--R3进行传参,当参数超过4个时,必须通过栈进行传参(入栈保护,出栈恢复),: branch 无条件跳转,当函数调用时,无法将返回地址保存到LR寄存器。: 将寄存器中的值某几位置一(取决于立即数那几位是1): 将寄存器中的值某几位清零(取决于立即数那几位是1)bl : 函数调用时,会将返回地址保存到LR寄存器。: 当寄存器中的数据写入指定的RAM中。:*--SP,先让SP--,再写数据。: 跳转到LR寄存器对应的返回地址。:入栈时,SP指针向上移动。:入栈时,SP指针向下移动。
2026-03-25 17:54:52
213
原创 ARM基本知识
mermory manager unit 内存管理单元,主要针对于虚拟内存,由于管理虚拟内存到物理内存的映射,从而提高物理内存的利用率,在裸机阶段必须关闭MMU。寄存器:save program status register 保存/备份程序状态寄存器,异常发生时,保存CPSR寄存器中的程序状态。寄存器:stack(栈) pointer 栈指针寄存器,先进后出,用来管理栈区,且永远指向栈顶。芯片面积大,加工成本高,复杂,体积大,功耗大。芯片面积小,加工成本低,简单,体积小,功耗小。
2026-03-24 18:46:31
336
原创 串口+温度传感器
波特率,起始位,设备格式,功能码,数据位1,数据位2,校验位,结束位。低位先行:先发低位数据 LSB。高位先行:先发高位数据 MSB。串口发送数据时,遵循LSB发送原则,低位先行。分辨率:传感器对温度变化的敏感程度。
2026-03-23 16:31:08
222
原创 嵌入式硬件编程
中断的概念:当CPU执行某个任务时,外界发生了一个紧急事件,要求CPU放下当前任务,转而去执行这个紧急的事件,执行完紧急事件以后再回到原来被中断的地方继续向下执行中断源的概念:打断CPU执行当前任务的源头/事件外部中断:引脚电平的变化所引发的中断(P32,P33)PWM:脉冲宽度调制,能够使引脚产生一个方波,PWM可以让引脚电平周期性翻转PWM周期:一个PWM方波所经历的时间(从一个上升沿/下降沿-->下一个上升沿/下降沿)PWM占空比:高电平在一个周期里的比例。
2026-03-20 18:54:58
425
原创 SQLite
功能:此函数由用户定义,当sqlite3_exec 函数执行时sql语句后,结果集不为空时,sqlite3_exec函数会自动调用此函数,每次调用此函数时会把结果集的一行信息传给此函数。功能:执行sql指向的SQL语句,若结果集不为空,函数就会调用函数指针callback所指向的函数。功能:执行sql指向SQL语句,函数将结果集相关的数据的地址保存在函数的参数中。(以"zhang"开头的字符符合条件)(以"an"结尾的字符符合条件)(含"ang"的字符符合条件)参数:结果集的数据的首地址。
2026-03-15 11:03:26
387
原创 并发服务器、多路IO复用
显卡声卡网卡:能让你上网的URL的一般形式<协议>://<主机 ip> : <端口>/功能:从中找字符串参数:返回值:返回找到的子字符串的起始位置客户端:并发服务器——支持多个用户同时访问循环服务器(迭代服务器)while(1)//连接accept();//问题1:阻塞操作——在等待队列中没有连接请求时会阻塞while(1) //问题2:通信过程可能是一个耗时操作//通信recv();send();}}实现简单。
2026-03-14 10:34:43
432
原创 Linux系统编程:kill,pause,System V IPC对象 共享内存、消息队列、信号灯集
若接收到信号并处理后返回,固定返回 -1,且设置 errno 为 EINTR(表示函数被信号中断)。功能:给进程发信号,向指定的进程或进程组发送指定的信号,是实现进程间信号通信的核心函数,可用于控制进程(如终止、暂停、唤醒等)。size 申请的大小,(分配的实际大小是4K的倍数,但可用的大小为申请大小)当key值对应的共享内存ID存在,此时直接返回已经存在的共享内存ID。当key值对应的共享内存ID不存在,此时会申请一块新的共享内存区域。练习:探测共享内存是否存在,如果存在,报错,如果不存在,则创建。
2026-03-11 15:24:34
347
原创 Linux系统编程:网络编程
网络—— 解决不同主机间进程的通信IP地址—— 用于标识网络中的一台主机端口号—— 找到该主机上的一个进程IP地址组成:网络号 + 主机号IP表示方式:IP地址的本质实际上是一个32位的数值,由于人不方便记忆于是出现了IPV6是128位,由于IPV4不够用了才出现的分类:1以OSI为例物理层:主要定义物理设备标准,主要作用是传输比特流数据链路层:提供错误检测和纠正,确保数据的可靠传输,定义了如何让格式化数据以帧的形式网络层(路由器):在位于不同地理位置的网络中的两个主机系统中提供链接。
2026-03-09 19:32:04
425
原创 Linux系统编程:管道,信号
/pipefd[0] —— 读端 —— 文件描述符。//pipefd[1] —— 写端 —— 文件描述符。signal 函数 —— 信号处理函数的注册函数 —— 注册一个对信号的处理方式。参数:@pipefd //获得管道的读端和写端。可以用于任意两个进程间通信(亲缘 和 非亲缘都可以--只要用的是同一个管道)SIG_DFL // 默认处理(如终止、忽略、core dump)//信号处理函数 参数 --signo 表示信号的编号。SIG_IGN // 忽略信号。
2026-03-05 18:57:47
377
原创 Linux系统编程:线程2:退出、回收、锁
任意一个线程调用exit都会导致进程结束,进程结束则线程不复存在,从main函数中执行return 操作这种也是进程结束,也会导致所有线程结束。如果是主线程调用pthread_exit函数,此时主线程的执行流结束了,但是进程并没有结束,此时进程会等所有子线程结束才会销毁。线程如果是可结合的,调用pthread_exit退出,调用pthread_join来回收资源,并且可以获得退出状态值。线程在该函数上不会随塞。功能:等待当前线程结束并回收资源,获得退出状态值 -- 类似于进程中的wait。
2026-03-04 18:21:56
375
原创 Linux系统编程:多任务编程2 + 线程
功能:等待子进程状态改变,但是这里我们研究的是子进程的退出参数:@wstatus:用来保存子进程退出的状态值的返回值会传给父进程,而父进程可以通过wait或waitpid的wstatus来获得注意要获得退出状态值需要使用宏才能获取WIFEXITED(wstatus)//判断子进程是否时正常结束WEXITSTATUS(wstatus)//获取子进程退出状态WIFSIGNALED(wstatus)//判断子进程是否是信号结束的WTERMSIG(wstatus)//获得结束的信号编号。
2026-03-03 17:47:51
371
原创 Linux系统编程:多任务编程——进程
ps aux | grep a.out //查看进行的快照信息 --- pid 和 stat 状态信息。fork 之后,PCB各是各的,堆|栈|bss|data|text //这些内容是一样的。进程:正在运行中的程序——描述程序动态的执行过程的——程序的一次执行过程。pstree -sp pid号 //查看指定进程的进程关系。功能:创建子进程-->通过复制调用过程,实现子进程的创建。./a.out ---> 运行起来 ---> 进程。操作系统 --- 调度器 -> 调度算法 ==
2026-02-28 19:55:41
790
原创 Linux系统编程:文件编程2
文本文件 --- 文本信息 1.txt 1.c可执行文件 --- 二进制信息 --- 二进制文件 a.outfputs。
2026-02-26 20:27:51
587
原创 Linux系统编程:文件编程1:fopen/fclose,fgetc/fputc,fgets/fputs
基于Linux操作系统提供的函数接口实现功能(编程)
2026-02-25 21:01:36
1038
原创 嵌入式学习日志_Day19:结构体、共用体、枚举、位运算
struct 类型名数据类型 成员变量名1;数据类型 成员变量名2;数据类型 成员变量名3;类型名:等同于int,char,double,与它们同等级别int a;strcut 结构体名 变量名;//示例//全部初始化:结构体变量定义+初始化 全填//gnu(gcc) 局部初始化 填部分//信息我还不知道,先开个空之后再装 先不填union 共用体名字数据类型 成员变量名1;数据类型 成员变量名2;数据类型 成员变量名3;......
2026-02-03 17:50:12
1529
原创 嵌入式学习日志_Day13:解析C语言预处理指令
大部分情况,宏定义都放在文件的开头不要加分号宏定义是代码替换,中间不进行任何数据的计算宏定义的标识符一般都大写int main()double r=0;return 0;接下来我们看一下pi.i预处理文件# 5 "pi.c"int main()double r=0;return 0;可以清晰看到pi.c文件里面的11行里PI在pi.i文件第8行这里被无脑带换成3.145。
2026-01-27 17:41:08
754
原创 嵌入式学习日志_Day12:深入解析函数传参与递归调用
本文分析了函数调用中的参数传递机制。在值传递中,形参是实参的副本,修改形参不影响实参;地址传递(如数组)则可以通过形参修改实参;对于数组参数,由于传递的是地址,可以在函数内部修改数组元素。递归调用部分介绍了阶乘、汉诺塔和斐波那契数列的实现,强调递归需要终止条件以避免栈溢出。
2026-01-26 18:39:56
354
原创 嵌入式学习日志_Day11:C语言函数入门——从定义到应用
本文介绍了C语言函数的基础知识,主要内容包括:1)函数定义语法(返回类型、函数名、参数列表);2)函数调用规则(声明、传参、返回值处理);3)变量作用域(局部/全局变量)与生命周期;4)存储类型(auto/register/extern/static)及其内存特性。重点讲解了如何通过函数实现代码复用和模块化编程,以及不同存储类型变量的内存分布和访问规则。文章还涉及函数参数传递、返回值处理等核心概念,并说明了全局变量和局部变量的作用域差异。
2026-01-24 17:39:57
733
原创 嵌入式学习日志_Day10:C语言字符串操作全解析
摘要:本节讲解字符串常用操作与函数,包括输入输出函数(scanf/gets/printf)、字符串长度获取(strlen)、复制函数(strcpy)、拼接函数(strcat)和比较函数(strcmp)。重点介绍了这些函数的实现原理及手动实现方法,并讲解了二维字符数组的初始化、访问和修改。
2026-01-23 17:42:36
827
原创 嵌入式学习日志_Day9:倒置、冒泡、选择、二维数组、一维字符数组
/全部初始化//部分初始化//剩余的全部都是0//剩余的全部都是0//全部都是0 用的多int f[][3]={{1,2,3},{1}} //一维数可以省略,编译器会根据初始化列表来推断一维的个数//编译能过去但是容易出错//全部初始化//字符串常量,自动有\0//常用//部分初始化//其余补0//常用//默认初始化//不是字符串 会出错//str6 不用&操作,不要越界!
2026-01-22 17:31:51
815
原创 嵌入式学习日志_Day8:do while 循环与数组
/定义//全部初始化,{1,2,3,4,5}叫初始化列表,每个值都给出//部分初始化,其余未初始化的位置都用0初始化//局部初始化,使用较多,从功能上看,全部初始化为0//默认初始化,在定义的时候,元素个数是可以省略的//编译器会根据初始化元素的个数来决定数组的大小这个数组大小为1//int e[];错误。
2026-01-21 17:16:17
707
原创 嵌入式学习日志_Day7:if、switch分支;while、for循环
本章重点学习分支控制:if相关用法;switch等值比较;while,for,三要素上一节我们开始学习if语句,接下来我们继续深入学习if分支以及其他控制流程。
2026-01-20 17:15:59
620
1
原创 嵌入式学习日志_Day6:字符串的输入、输出;顺序逻辑,分支逻辑,循环逻辑;关系运算符,逻辑运算符,三目运算符、if分支
上一节我们展示了单个字符的输出(putchar)输入(getchar),以及格式化输出(printf)输入(scanf),重点是printf,scanf相关的函数使用,控制字符,接下来继续学习其他输入输出函数以及关系、逻辑运算符。
2026-01-19 17:36:40
512
原创 嵌入式学习日志_Day5:输入、输出函数
输出:计算机中的内存为参考点,数据是从内存中取出输入:计算机中的内存为参考点,数据是从内存中放入C语言中,需要使用系统提供的相关函数,实现输入输出操作 #include<stdio.h>
2026-01-17 18:07:00
323
1
原创 嵌入式学习日志_Day4:数据类型转换、运算符与优先级
强制转换:人为的把一种数据类型转换为另外一种数据类型的操作格式:(需要转换的类型)常量 eg:(double)5 -->转换完后,这个位置会产生一个中间临时变量,他的结果是5.0000,常量本身不发生变化(需要转换的类型)变量 eg: int a = 10;(float) a;(需要转换的类型)(表达式) eg:(double)(1+2)
2026-01-16 17:20:43
560
1
原创 嵌入式学习日志_Day3:常量与变量、运算符与数据类型转换准则
初始化:变量在定义完成后,必须初始化变量如果没有初始化,此时变量中值是一个随机数。
2026-01-15 17:42:05
397
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅