- 博客(40)
- 收藏
- 关注
原创 ARM嵌入式学习--第十四天(SPI)
串行外围设备接口。是由Motorola公司开发,。这样。与标准的串行端口不同,,这个同步时钟信号由主机(处理器)产生,接收数据的外设(从设备)使用时钟对串行比特流的接收进行同步化,当有多个芯片连接到主机的同一个SPI接口上,这时主机通过触发从设备芯片的片选信号输入引脚[片选管脚]来选择接收数据的从设备,没有被选中的外设将不会参与到SPI传输。SPI主要使用4个信号:1.2.3.SCLK或SCK4.CS。
2025-02-08 19:40:49
1011
原创 ARM嵌入式学习--第十三天(I2C)
inter IC提供标准I2C从机和主机的功能,I2C被设计为兼容标准NXP I2C总线协议I2C是一种双线串行总线,它提供了一种简单有效的数据交换方法,最大限度地减少了设备之间的互连,这种总线适用于需要在许多设备之间偶尔进行短距离通信的应用,灵活的标准允许将其他设备连接到总线上,以进行扩展和系统开发。
2025-02-07 21:00:33
901
原创 ARM嵌入式学习--第十二天(WDOG,RTC)
WatchDog是为了能够防止程序跑飞而使用的一种硬件模块,如果你的程序没有跑飞,那么你的程序会定时的去喂看门狗;如果你的程序跑飞了,那么就不会再去喂狗了,如果超过了喂狗时间,那么狗就会自己生成一个信号来重新reset你的CPU让程序重新开始。这是一种在很重要的情况下防止系统跑飞的一种方式实时时钟的缩写是RTC).RTC是集成电路,通常称为时钟芯片实时时钟芯片是日常生活中应用最广泛的消费类电子产品之一。它为人们提供精确的实际时间,或者为电子系统提供精确的时间基准,
2025-02-02 13:43:10
906
原创 ARM嵌入式学习--第十一天(中断处理 , ADC)
ADC即模拟数字转换器(英语:)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。
2025-01-31 20:23:25
1132
原创 ARM嵌入式学习--第十天(UART)
UART通用异步接收器,是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括与监控调试器和其他器件,UART我们可以认为它是集成在SOC内部的一个控制器,它可以按照串口通信协议格式收发数据由俩部分组成:一个将串行比特流转换成微处理器可以使用的并行数据接收器Rx)和一个将来自微处理器的并行数据转换为串行形式发送的发送器Tx同步通信:在数据传输的过程中,需要一根时钟线同步,例如IIC,SPI总线。
2025-01-30 14:36:59
1681
原创 ARM嵌入式学习--第九天(串口通信)
通信方式是指双方之间的工作方式或信号传输方式,终端与其他设备(例如其他终端,计算机和外部设备)通过数据传输进行通信,根据数据的传输方式,有串行通信和并行通信串口全称叫做串行接口,通常也叫做COM接口,串行接口指的是数据一个一个的顺序传输,通信线路简单,使用俩条线即可实现双向通信,一条用于发送一条用于接收--串口通信电平标准所谓的电平标准,指的是在通信的过程中如何表示0和1的问题。即在通信过程中用什么样的电压表示1,用什么样的电压表示0。由于行业需求不同,在发展过程中出现了很多串口通信电平标准。
2025-01-25 19:44:24
998
原创 ARM嵌入式学习--第八天(PWM)
PWM(pulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在测量,通信,工控等方面1.脉冲周期T),单位是时间,比如纳秒(ns),微秒(us),毫秒(ms)等2.脉冲频率f),单位是HZ,KHZ等,与脉冲周期成倒数关系f=1/T3.脉冲宽度W),简称“脉宽”,是脉冲高电平持续的时间,单位是时间4.占空比D),脉宽除以脉冲周期的值百分比表示,比如50%,也常有小数或分数表示的,比如0.5或1/2。
2024-12-18 22:06:56
1261
原创 ARM嵌入式学习--第七天(GPT)
GPT有一个32位向上计数器,定时计数器值可以使用外部引脚上的事件捕获到寄存器中,捕获触发器可以被编程为上升沿和下降沿。GPT还可以在输出比较引脚上生成事件,并在定时器达到编程值时产生中断。GPT有一个12位预分频器,它提供从多个时钟源获得的可编程时钟频率。
2024-12-15 22:56:38
970
1
原创 ARM嵌入式学习--第六天(电子电路基础知识)
一般来说,电荷在电场中会受力而移动,当导体之间有了介质,则阻碍了电荷移动而使得电荷积累在导体上,造成电荷的累积存储,存储的电荷量则称为电容,,比如当电压在很短的一段时间内降低电压或当电路的一部分被切换导致电源波动时产生的电压波纹。在压降发生的瞬间,电容暂时充当电源,旁路主电源,,当线圈通过电流后,在线圈中形成磁场感应,感应磁场又会产生感应电流来抵制通过线圈的电流,这。即能在一个方向通过电流,在另一个方向上截止电流,正向导通电流(除了名字和器件号码,元件还有一系列引脚,引脚也有编号,
2024-10-24 19:07:09
1432
原创 ARM嵌入式学习--第五天(ARM核的异常处理)
流水线执行非法指令产生,该异常发生在流水线译码阶段,如果当前指令不能被识别为有效指令,将会出现此类异常优先级:6级模式:UDF未定义模式。
2024-10-23 16:27:26
1058
原创 ARM嵌入式学习--第四天(汇编与C混合编程)
如果我们在前面已经将这个变量所对应的内存数据读到寄存器中,而当我们再次需要读这个变量所对应内存的数据的时候,而优化后的代码每次存寄存器读值,就会带来寄存器中的值和内存中的值不一致的问题。volatile(译:易改变的)修饰一个变量,C语言的引用,从输出列表到输入列表开始编号;:修改列表(通用的寄存器),则应该使用volatile修饰。
2024-10-17 19:40:56
545
原创 ARM嵌入式学习--第三天(ARM常用伪指令分析)
编译器在编译的时候,将翻译成了这一条读内存的指令,根据PC的值加上偏移量算出0xabcdef这个数据在内存的地址,然后使用ldr指令读取这个地址的数据。
2024-10-15 16:57:44
880
原创 ARM嵌入式学习--第二天(指令流水线)
描述:1.上图仅为处理简单的寄存器操作指令(不包括存储器访问指令和跳转指令存在存储器访问指令,跳转指令的情况下会出现流水线阻断情况,导致流水线的性能下降,上图给出的是流水线的最佳运行情况)2.上图中的等指令为单周期指令,并且都是简单的寄存器指令3.上图从T1开始,用3个时钟周期执行了3条命令,指令平均周期数(CPI)等于1个时钟周期。
2024-10-12 10:27:15
692
原创 ARM嵌入式学习--第一天(ARM核)
CPU又叫中央处理器,其主要功能是进行算数运算和逻辑运算,内部结构大概可以分为控制单元,算术逻辑单元和储存单元等几个部分。
2024-10-04 11:52:39
767
原创 linux学习--第八天(多路复用IO)
本质:就是通过复用一个进程来处理多个IO请求由内核来监控多个文件描述符是否可以进行I/O操作,如果就绪的文件描述符,将结果告知用户进程,则用户在进程相应的I/O操作。
2024-10-03 12:29:15
608
原创 linux学习--第六天(进程)
信号量的使用类比红绿灯信号量:由内核维护的整数,其值被限制为大于0或等于0信号量可以执行如下操作:1.将信号量设置成一个具体的值2.在信号量当前值的基础上加(或减)上一个数3.等待信号量的值为0一般信号量分为二值信号量与计数信号量二值信号量:一般指的是信号量的值为1可以理解为值对应一个资源计数信号量:一般指的是信号量的值大于等于2可以理解为对应多个资源。
2024-09-26 22:30:30
1066
原创 linux学习--第五天(进程)
进程描述是一个程序执行过程,当程序执行后,执行过程开始,则进程产生;,由操作系统调度算法来实现每个时间片所执行的任务,一旦一个任务的时间片消耗完,则操作系统会切换到下个任务到CPU中执行。2.每一个进程都需要与其他某一个进程建立父子关系,对应的进程叫做父进程。五态模型:新建态,终止态,运行态,就绪态,阻塞态。4.进程的id与父进程的id分别通过。三态模型:运行态,就绪态,阻塞态。,它是程序执行的过程,包括了动态创建,调度和销毁的整个过程。,它是保存在磁盘上的指令的有序集合,没有任何执行的概念。
2024-09-14 20:41:25
803
1
原创 linux学习--第四天(Linux文件操作)
流(stream)是一串连续不断的传输的数据的集合,就像水管里的水流,在水管的一端一点一点的供水,而在水管的另一端看到的是一股连续不断的水流。处理所有预处理命名,包括宏定义,条件编译指令,文件包含指令。将多个目标文件进行链接,得到一个程序最后的执行文件。,当编译器链接静态库的时候,会将库函数接口实现代码拷贝到可执行文件中。,可以在linux,windows,mac os上运行,文件IO。,运行程序不需要库的存在,因为程序中已经包含了库函数的实现代码(区,当程序未结束时,想强制刷新缓冲区,则需要调用。
2024-09-06 20:18:46
564
原创 linux学习--第三天(Linux特殊字符)
{shell pwd} [注意括号为“ { ”不是“( ”]awk ` { printf $列数 } `将本应该输出到屏幕上的正确的数据,改输到其他文件。make -C 子makefile的路径。sed:一个强大的文本。awk:一个强大的文本。0为成功,非0为失败。
2024-08-22 16:10:17
681
原创 linux学习--第二天(Linux文件系统)
(常用:less -IMNP 字符串 文件)[u,g,o] [+,-,=] 权限 文件。源文件删除不会影响硬链接文件,但软链接会失效。常用:grep 内容* -nR 文件。删除目录必须加上“ -r ”选项。ln 源文件 硬链接文件。ln 源文件 软连接文件。-改变所属组和文件主的命令。-P 字符串 文件。-name 关键词。文件本身内容不会删除。一般与管道符联合使用。
2024-08-18 13:53:39
997
原创 linux学习--第一天(Linux基础命令)
root用户默认是/root;普通用户是/home/用户名。install 软件包。adduser 用户名。remove 软件包。passed 用户名。
2024-08-13 15:49:36
1769
原创 数据结构--第八天(哈希表)
即当一个关键字和另一个关键字发生冲突时,使用某种探测技术在Hash表中形成 一个探测序列,然后沿着这个探测序列依次查找下去,当碰到一个空的单元时,则插入,,将节点存储到f(k)所指示的的存储位置上,在查找时再根据要查找的关键字,用同样的函数计算地址,然后到对应的单元读取。被称为散列地址或者哈希地址。通常情况下,散列表的储存空间是一个一维数组,而。被称为哈希表,使用的函数被称为散列函数或者哈希函数,哈希表则结合了俩者的特点,,计算出对应的函数值,把这个函数值解释为。为自变量,通过一个确定的函数关系。
2024-08-12 18:42:18
1050
原创 数据结构--第七天(递归)
1.递归存在限制条件当满足这个限制条件,便不再继续。2.每次递归调用之后越来越接近这个限制条件。递归的思考方式就是把。
2024-08-09 11:46:38
878
原创 数据结构--第五天(队列)
时,保存头节点下一个节点的地址,释放头节点,更新front,使front指向新的队头元素。时,只需要将该数据所在节点释放,并将front和tail。时,新建节点,并要用入队列的数据初始化节点,此时。时,新建节点,并要用入队列的数据初始化,此时。数据操作的特殊线性表,队列具有。
2024-07-30 17:50:13
379
原创 数据结构--第四天(栈)
栈:一种特殊的线性表,只允许在栈顶进行插入和删除元素操作,即。2.单端操作:所有的添加和移除操作仅在。:栈的基本操作确保了最后被添加的元素总是被第一个删除。,栈的这种特性使它在处理。的问题和算法中非常有用。操作均在链表头部进行,
2024-07-30 15:02:09
387
原创 数据结构--第三天(单向循环链表)
单向循环链表是对单向链表的一种改进方式,本质是链表尾节点的指针域存放头节点的地址,这种首尾相连的链表叫做单向循环链表。
2024-07-26 08:41:36
421
原创 数据结构--第二天(链表)
叫尾节点(尾节点的指针域为NULL虚拟头节点:为了方便对链表进行操作,一般会在链表的头节点前面,再创建一个节点,称为。
2024-07-25 18:46:15
404
原创 初识C语言--第九天(指针进阶)
从值来看,arr与p是相同的,从类型来看,p的类型为int*,arr是数组名,类型为int[7]//指针p本身的值不能改,并且p所指向的内容也不能改(p和*p都不能改)//指针p本身的值不能改,并且p所指向的内容也不能改(p和*p都不能改)//指针p本身的值可以改,但是p所指向的内容不能改(*p不能改)//指针p本身的值可以改,但是p所指向的内容不能改(*p不能改)//指针p本身的值不能改,但是p所指向的内容可以改(p不能改)const后面修饰的为 j,表示指针中存储的地址不能更改。
2024-07-18 13:21:13
888
原创 初识C语言--第八天(函数)
1.函数的声明:告诉编译器有一个函数叫什么,参数是什么,返回类型是什么,但是具体是不是存在,函数声明决定不了(*函数的声明一般出现在函数使用之前,要满足先声明后使用(*函数的声明一般要放在头文件里2.函数的定义:函数的定义是指函数的具体实现,交代函数的功能实现(若函数的定义放在主函数前面,可以不用进行函数的声明。
2024-07-14 09:02:02
430
原创 初识C语言--第七天(指针)
含义: 定义指针的时候,一般会把指针的值初始化为0地址,仅仅用于初始化。0地址用户没有执行权限。直接对0地址操作,系统会提示段错误。void * 是一种特殊的指针类型,3.指针指向空间释放,及时置空。例如:int* p=NULL;大端(存储)模式:是指数据的。小端(存储)模式:是指数据的。1.指针初始化(int* p=NULL;4.指针使用之前检查有效性。3.指针指向的空间释放。如果要使用,需要进行强制类型转换。例如:int* p=NULL;随机的,不正确的,没有限制的。数组名是数组中首元素的地址。
2024-07-07 08:33:45
466
原创 初识C语言--第六天(数组)
定义的数组 a 有 5 个元素,但花括号内只提供两个初值,这表示只给前面两个元素 a[0]、a[1] 初始化,而后面三个元素都没有被初始化。比如“int a[5]={0};”,这时就是给数组“清零”,此时数组中每个元素都是零。此外,如果定义的数组的长度比花括号中所提供的初值的个数少,也是语法错误,如“a[2]={1,2,3,4,5};通过将数组元素的初值依次放在一对花括号中,如此初始化之后,a[0]=1;a[4]=5,即从左到右依次赋给每个元素。例:1int arr[3][4]={1,2,3,4};
2024-06-23 08:55:42
655
原创 初识C语言--第五天(循环)
(for循环中也可以使用break和continue,它们的意义和在while循环中一样)(例如:用户输入考试成绩,如果没有通过考试,直到通过为止)用在循环中是用来终止循环的,当满足某个条件时,循环终止。用在循环中是用来结束本次循环,后面循环还会进行。条件判断部分,用于是否进行循环操作的判断。初始化部分,用于初识化循环变量。调整部分,用于更新循环变量。
2024-06-10 13:43:47
582
原创 初识C语言--第四天(switch语句)
(break含义:case匹配成功后,对应语句执行完成后,会跳出switch)switch语句也是一种分支语句,常常用于多分支的情况。(常量表达式只能是整数,char,枚举)
2024-06-02 08:43:30
534
原创 初识C语言--第三天(三目运算符 ,if-else语句)
算数运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符选择语句(分支语句)---if语句(单分支)语法结构1:
2024-05-31 23:16:44
614
原创 初识C语言--第二天(基础运算符)
(注:Linux 64位操作系统环境下,打印出来的地址会很大,因为在64位操作系统中,地址变量在内存中占有8个字节)功能:从键盘上输入数据存放到变量1,变量2.....,变量n所表示的内存单元;) 对应的是正数和0,逻辑右移是对应的二进制位向右移动,低位丢弃,高位补0。后置++(--),先进行赋值操作,再++(--):可以获取变量在内存中的地址(通过%p可以打印在内存中的地址)左移的时候,等价于将这个数据乘以2的n(移动的位)次方。):若是数据为正数,算术右移是对应的二进制位向右移动,
2024-05-30 22:06:55
1453
原创 初识C语言--第一天
1.变量的含义:在实际编程和生活中,某些数据并不是一成不变的,而是根据实际的需求,可以时时改变,这样变量就应运而生。今天是一个特殊的日子,在这一天我真正意义上接触到了人们耳熟能详的C语言知识,虽然我对C语言了解并不是很多,但不妨碍我对其充满热情和好奇心,我坚信自己一定可以学好C语言!功能:向屏幕上输出双引号中的内容,“”中的字符串原样输出,格式输出串会被后面的参数给替换掉,参数的个数由格式控制串的个数决定。一般用与储存整数(范围更大)(如30,-30)long-----占4byte;上级目录:cd ..)
2024-05-29 21:49:06
767
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人