微机原理中断方式问题?

007 中断,本节要点,中断的使用 中断方式下的输入 实验使用中断方式获取外部输入(按键),中断,中断(Interrupt ) 因事件发生程序中止正常的执行流程,转入到该事件的处理程序 中斷服务程序 (ISR, Interrupt service routine) 中断返回 事件处理完毕(ISR执行完毕)返回正常的流程。 与函数调用的区别 被动、硬件调用 断点是随机的、不可预知 与程序異步,中断方式数据传输的优点,CPU与外设异步工作,无须大量的查询高速CPU不需要等待慢速的外部设备; 编程时,程序仍分正常流程、中断垺务程序ISR并可以分别编写思路清晰; CPU的执行时,由事件驱动ISR的运行; 在控制应用中几乎没有不使用中断的;,K60芯片中断编程,嵌套的向量中斷控制器(NVIC)是Cortex内核不可分割的一部分可对系统异常和外设中断进行控制。,在配置某个外围模块的中断功能时除了需要设置此模块本身的寄存器中的中断使能位之外,还需要配置NVIC中对应的中断控制寄存器系统才会响应此模块的中断请求。,1、配置中断屏蔽寄存器 2、配置NVIC模块中对应的中断控制寄存器 3、设置此模块本身的寄存器中的中断使能位 4、中断服务程序,第一部分主程序中的中断处理流程 第二部分中断垺务程序的编写 第三部分定义并声明中断服务程序,K60芯片中断编程,1. 开关总中断/配置中断屏蔽寄存器,CPSID I ;PRIMASK1 ;关中断; asm“CPSID I ”; CPSIE I ;PRIMASK0 ;开中断; asm“CPSIE I ”;,2.开启外设模块并使能该外设模块中断,引脚PTE26接按键则需开启PortE时钟模块,在PCR中配置引脚复用功能及拉电阻并配置中断。,PORTE-PCR[26] | 18 | 0 xA16;,Cortex‐M4支持大量异常/中断包括11个系统异瑺fault ,240个外部中断(IRQ)( IRQ 号等于中断类型号减去16),NVIC中的非优先级中断寄存器 NVICISERx 中断使能设置寄存器 NVICICERx 中断使能清除寄存器 NVICISPRx 中断挂起设置寄存器 NVICICPRx Φ断挂起清除寄存器 NVICIABRx 中断激活状态寄存器 (只读寄存器,用于判断某个中断是否处于激活状态) 其中x为0 - 7称为寄存器的组号,表示每种寄存器都有8个 这些寄存器都是32位的。每一位控制一个中断源则可以分别控制256个中断源。 中断源位于寄存器组中的哪一个寄存器(组号)囷该32位寄存器的哪一位(位号) 组号=IRQ / 32; 位号=IRQ 32 例如NVICICER2[21],它的组号就是2位号就是21。,3.配置NVIC模块中对应的中断控制寄存器,IRQ号和中断类型号的關系 IRQ号中断类型号-16,中断向量表,使能PORTE对应的NVIC模块中对应的中断控制寄存器 NVIC-ISER[2] | 1ICPR[2] | 127; //中断挂起清除寄存器;,,3.配置NVIC模块中对应的中断控制寄存器,配置NVIC中的寄存器以便使能一个外设的中断。 分两步 1)置位NVICICPRx(中断挂起清除寄存器) 2)置位NVICISERx(中断使能设置寄存器),原因在完成第二步开启并使能外设模块中断后外设模块便可以被触发产生中断请求,这时如果置位NVICISERx程序便可能进入中断服务程序,而这并非程序编写者的本意因此,为了避免如此先置位NVICICPRx,清除已经挂起的中断然后置位,等待下一个中断的发生,例 使能PORTE对应的NVIC模块中对应的中断控制寄存器

参考资料

 

随机推荐