复位和中断
- 格式:ppt
- 大小:7.31 MB
- 文档页数:72


单片机学习总结四篇单片机学习总结人的一生是一个不断学习、不断成长的过程。
转眼间,研究生的学习生涯结束了,走上新的工作岗位。
回头看看,发现自己不知不觉已经走过了五年的单片机学习之旅。
在201x年最初接触单片机的时候,在我心中觉得51就是单片机,单片机就是51,根本不知道还有其他单片机的存在。
那时候老师只教会了我们汇编语言,根本不知道用c语言也可以进行单片机开发。
幸运的是,我加入了单片机兴趣小组,在老师的指导下,做了一系列实验,有“基于ds18b20的温度采集系统”、“有基于164的移位寄存器的灯光控制系统”、“有步进电机和直流电机的控制系统”。
这时候我才发现,这是学习单片机的一个最好途径——在实践中领悟理论,用理论指导实践。
在上课的整整一个学期中,虽然老师讲得很详细,但是大部分概念都是到了实际动手做东西的时候才弄明白的。
而且在经历了迷惑之后再搞清楚,印象就特别深刻。
直到现在我对那些概念和接口都非常清晰。
其实我也很庆幸学习和使用了两年多的汇编语言。
由于有这些锻炼,我对单片机底层结构和接口时序就弄得很清楚。
在使用c语言开发的时候,优化代码和处理中断也就不会太费劲。
我觉得,虽然现在绝大部分单片机开发都使用c语言,甚至有些公司还推出了图形化编程的工具,这样对于项目的开展从时间上快了很多,在管理上也规范了不少,但是从学习和想深入掌握单片机精髓的角度来说,还是需要熟练掌握汇编语言的使用。
机会总是青睐于有准备的人。
也许有了前面一段时间的理论和实践的积累,我才慢慢得到了一些参加科技竞赛和参与科研项目的机会。
在参加第一届浙江省机械设计竞赛的时候,我们设计的由多单片机系统协调控制的“月球车”机器人夺得了唯一的一个特等奖。
这个竞赛给我最大的收获是我对单片机的认识改变了,它不再仅仅是一门学科了,它是一个可以让你的创意得到充分发挥的平台。
后来参与了“基于视频分划技术的钢卷尺自动切零位机”、“电能表涡杠涡轮啮合深度检测系统”、“基于公共电话网的水表集抄数据路由器”、“高精度电感微位移测量系统”等一些实际的项目。
在ARM编程领域中,凡是打断程序顺序执行的事件,都被称为异常。
除了外部中断外,当有指令执行了“非法操作”,或者访问被禁的内存区间,因各种错误产生的fault,以及不可屏蔽中断发生时,都会打断程序的执行,这些情况统称为异常。
简单来说:异常包括外部中断和内核fault。
外部中断(IRQ):原本处于正常状态,突然有个外部因素干扰,然后马上处理干扰事项,解决好后又回到原来正常状态。
在中断产生后一般会去执行中断服务函数,实现特定任务。
无特殊说明,后面:异常就是中断,中断就是异常在编译时,每一个函数都有一个入口地址,该地址就是函数名。
尽管函数不是变量,但它在内存中仍有其物理地址,该地址能够赋给指针变量。
函数名相当于一个指向其函数入口指针常量。
函数名后面加圆括号,表示函数调用。
若要得到函数的地址,直接用函数名就可以了。
函数名就是一个地址,是存放该函数代码在存储器空间上的起始地址。
以一个子函数为例,编译器会分配一段内存空间用于存放改子函数代码内容,这段内存空间的起始地址是一个具体值,在程序里边就是函数名,当我们在程序其他位置调用该子函数时候,实际上就是让程序跳转到该函数名地址去运行子函数内容。
Cotrex-M4支持大量的中断,包括16‐5(保留功能)-1=10个系统异常,和最多240个外部中断。
当一个中断发生时候,并由CM4内核接受后,会执行对应的中断服务函数。
所以可以想象需要定义非常多的中断服务函数(而实际上并不需要很多,因为一般都只使能我们需要用到的中断)。
为方便CM4找到对应的中断函数入口,CM4使用了“向量表查表机制”这里使用一张向量表。
向量表其实是一个WORD(32位整数)数组,每个下标对应一种中断,该下标元素的值则是该中断服务函数的入口地址。
●#1~15(系统异常)在CortexM4中定义,IRQ#0~239(外部中断)中断由各个芯片商定义●向量表定义了中断的处理例程的入口地址。
缺省情况下,CM4认为向量表位于零地址处●响应中断时,CM4会根据中断号从表中找出对应的中断处理程序的入口地址●每个表项占用4字节●位置0x00000000处保存的是MSP的初始值异常类型表项地址偏移量异常向量00x00MSP的初始值10x04复位20x08NMI30x0C硬fault40x10MemManage fault50x14总线fault 60x18用法fault7‐100x1c‐0x28保留110x2c SVC120x30调试监视器130x34保留140x38PendSV 150x3c SysTick 160x40IRQ #0170x44IRQ #1中断向量表的跳转●支持10个Cortex-M4系统异常和82个可屏蔽外部中断●16个可编程优先级(使用了4位中断优先级)●包括内核异常在内的所有中断均通过NVIC进行管理。
具有中断逻辑和复位功能的 2 通道 i2c 总线开关2通道I2C总线开关是一种用于控制多个I2C设备的开关电路。
它具有中断逻辑和复位功能,可以在需要的时候自动切换I2C总线的连接。
本文将详细介绍2通道I2C总线开关的原理、应用场景和设计要点等。
1.概述I2C(Inter-Integrated Circuit)是一种在集成电路之间进行通信的串行总线协议。
它是由飞利浦(现在的恩智浦)公司开发的,被广泛应用于各类电子设备中,如传感器、外围设备等。
当系统中存在多个I2C设备时,为了避免总线冲突和地址冲突,通常需要使用I2C 总线开关。
2.功能特点2通道I2C总线开关通常具备以下几个功能特点:信号给总线开关,从而触发总线切换逻辑。
这种机制能够在系统中实现多个设备同时请求总线的协调工作。
(2)复位功能:总线开关一般具有复位功能,可以通过复位信号将总线开关恢复到初始状态。
这对于系统启动时的初始化工作非常重要,能够确保总线连接的稳定性。
(3)多通道支持:2通道I2C总线开关提供两个独立的通道,可以同时连接两个I2C总线。
这样可以实现多个I2C设备的并行通信,提高系统的吞吐量和效率。
(4)控制接口:总线开关一般通过SPI、I2C或GPIO等接口与主控制器进行通信,通过发送控制命令实现总线的切换和复位功能。
3.工作原理2通道I2C总线开关的工作原理如下:(1)初始状态:当总线开关刚上电或复位时,所有的通道都处于断开状态,即两个I2C总线无法连接。
信号给总线开关,触发总线切换逻辑。
总线开关根据预先设置的优先级规则,选择其中一个通道连接请求的总线。
(3)总线切换:总线开关通过内部的开关电路将选中的通道连接到主控制器。
连接后,该通道上的I2C设备可以与主控制器进行通信。
(4)总线释放:当I2C设备不再需要总线时,可以发送释放信号给总线开关,要求释放当前通道的连接。
总线开关收到释放信号后,将断开连接,回到初始状态。
4.应用场景2通道I2C总线开关适用于以下应用场景:(1)多设备共享总线:当系统中有多个I2C设备需要共享一个总线时,可以使用2通道I2C总线开关实现总线的切换和连接控制。
ARM 的异常处理学习笔记转贴ARM的异常处理这部分比较不好理解。
当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。
当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执行。
在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。
1、引起异常的原因(1)、指令执行引起的异常软件中断、未定义指令(包括所要求的协处理器不存在是的协处理器指令)、预取址中止(存储器故障)、数据中止。
(2)、外部产生的中断复位、FIQ、IRQ。
2、ARM中异常中断的种类(1)、复位(RESET)a、当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行,包括系统加电和系统复位。
b、通过设置PC跳转到复位中断向量处执行称为软复位。
(2)、未定义的指令当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。
(3)、软件中断这是一个由用户定义的中断指令(SWI)。
可用于用户模式下的程序调用特权操作指令。
在实时操作系统中可以通过该机制实现系统功能调用。
(4)、指令与取终止(Prefech Abort)如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。
(5)、数据访问终止(DATAABORT)如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断。
(6)、外部中断请求(IRQ)当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。
系统中个外设通过该异常中断请求处7)、快速中断请求(FIQ) 理服务。
(当处理器的外部快速中断请求引脚有效,而且CPSR的F控制位被清除时,处理器产生外部中断请求异常中断。