![中断初始化相关知识_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-7/7/7df98f44-1706-46f9-972e-b2fa992ae85e/7df98f44-1706-46f9-972e-b2fa992ae85e1.gif)
![中断初始化相关知识_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-7/7/7df98f44-1706-46f9-972e-b2fa992ae85e/7df98f44-1706-46f9-972e-b2fa992ae85e2.gif)
![中断初始化相关知识_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-7/7/7df98f44-1706-46f9-972e-b2fa992ae85e/7df98f44-1706-46f9-972e-b2fa992ae85e3.gif)
![中断初始化相关知识_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-7/7/7df98f44-1706-46f9-972e-b2fa992ae85e/7df98f44-1706-46f9-972e-b2fa992ae85e4.gif)
![中断初始化相关知识_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-7/7/7df98f44-1706-46f9-972e-b2fa992ae85e/7df98f44-1706-46f9-972e-b2fa992ae85e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.InitPieVectTable():每个中断都有自己的中断向量,即每个中断源都对应着自己的中断服务程序的入口地址,这些中断向量连续存在于RAM中,就是整个系统的中断向量表;Uint32 *Source = (void *) &PIE_RESERVED;中断服务函数入口地址;取PIE_RESERVED地址,强制转换为void*。换后的void*直接赋值给Uint32 *指针。这里要把PIE_RESERVED的首地址给指针Source,Source是Uint32型的,不能够直接给地址的,需要类型转换,在C语言里面指针强制转换要求两边的类型要是一样的,同时也指出了void类型是可以赋值给任何类
2、型的,所以这里用了(void*),其实也可改成(Uint32*)。Uint32 *Dest = (void *) &PieVectTable;中断向量表extern struct PIE_VECT_TABLE PieVectTable;(Device.h)一共128个中断,即128个中断向量ID: EALLOW;for(i=0; i 128; i+)*Dest+ = *Source;EDIS;把中断入口地址送给中断向量表,达到关联的目的;#define EALLOW asm( EALLOW)#define EDIS asm( EDIS) (Device.h)EALLOW是指允许对受保护的寄存器
3、操作,通常和EDIS配套使用,EDIS是指恢复被保护寄存器的状态,只有执行了EALLOW命令之后才能对受保护的寄存器操作。PieCtrlRegs.PIECTRL.bit.ENPIE = 1;使能中断向量表。2.InitPieCtrl(): DINT;关闭CPU总中断; #define DINT asm( setc INTM) ( Device.h) PieCtrlRegs.PIECTRL.bit.ENPIE = 0; 关闭PIE模块总中断。关闭所有PIE模块的中断: PieCtrlRegs.PIEIERn.all = 0;(n=012)清除所有中断标志位: PieCtrlRegs.PIEIFR
4、n.all = 0;(n=0.12)对于不可屏蔽中断来说,它直接进入CPU级。对于可屏蔽中断来说,PIE模块有相关的标志寄存器(PIEIFRx和PIEIERx)(x=1.12)每一个位设为y(y=1.8)当有中断请求进入PIE控制器的时候,相关的PIE中断标志位PIEIFRx.y置高。如果PIE中断允许位PIEIERx.y也置高的时候,PIE控制器机会检查PIEACKx标志位来决定CPU是否已经准备好接收这个PIE中断组的中断。如果PIEACKZx被清零了,那么PIE会把这个中断请求送到CPU;如果PIEACKx位置1,那么PIE就会等待直到这个标志位清零然后发送中断请求给CPU级的INTx。
5、一旦中断请求到达CPU级,CPU级和INTx相对应的中断标志位(IFR)置1,如果CPU中断允许寄存器(IER)或者调试中断允许寄存器(DBGIER)和全局中断屏蔽位(INTM)允许的话,CPU才会执行这个中断申请IER:CPU中断使能寄存器;extern cregister volatile unsigned int IER; (Device.h)CPU中断使能寄存器是一个16位的CPU寄存器,包含可屏蔽CPU中断(INT1-INT12,DLOGINT和RTOSINT中断)的使能位。IFR:CPU中断标志寄存器;extern cregister volatile unsigned int I
6、FR;(Device.h)15: RTOSINT 实时操作系统标志位;:0:已处理完成所有RTOS中断;1:至少一个RTOS中断未执行,向该位写0可以清除中断请求;14: DLOGINT 数据记录中断标志位;1:至少有一个DLOGINT中断未被执行,向该位写0可以清除中断请求;0:没有DLOGINT中断;13-0: INTx 中断x标志位;1:至少有一个INTx中断未被执行,向该位写0可以清除中断请求;0:没有INTx中断;EINT: #define EINT asm( clrc INTM) ( Device.h)使能CPU中断;INTM只是个位不是寄存器,编程中不会出现,由硬件控制,同时其清
7、除也在中断程序执行完后由硬件自动清除。判断INTM是否为0. 如果为0,CPU保存当前工作状态经过9个周期后开始执行中断。如过INTM为1,则只有等待。一般INTM为1,说CPU正在处理别的中断INTMBit0:中断全局屏蔽位。此位从全局上使能或禁止所有可屏蔽CPU中断(那些可由软件阻止的中断):0可屏蔽中断被全局使能。为了被CPU认可,则可屏蔽中断也必须被中断使能寄存器(IER)局部使能。1可屏蔽中断被全局禁止。即使一个可屏蔽中断被IER局部使能,也不会被CPU认可。INTM对非可屏蔽中断没有影响,包括硬件复位或软件复位中断NMI。此外,当CPU在实时仿真模式下被停止时,由IER和DBGIE
8、R使能的中断将被响应,即使INTM设置为禁止可屏蔽中断。当CPU响应中断时,INTM的当前值存储到堆栈中(当ST1存储在堆栈中时),然后INTM置位。当由中断返回时,INTM由堆栈中恢复。此位可分别由SETCINTM指令和CLRCINTM指令复位和清零。复位时,INTM置位。INTM的值不会引起中断标志寄存器(IFR)、中断使能寄存器(IER)或调试中断使能寄存器(DBGIER)的改变ERTM: #define ERTM asm( clrc DBGM) ( Device.h)DRTM:#define DRTM asm( setc DBGM) ( Device.h)DBGMBit1:调试启用屏蔽
9、位。当DBGM置位时,仿真器无法在实时状态下访问内存或寄存器。调试器无法更新其窗口。在实时调试模式中,若DBGM=1,则CPU忽略停止请求或硬件断点,直到DBGM清零。DBGM并不阻止CPU停止在软件断点。这点的一个影响可以在实时调试模式中看到。如果你在实时调试模式中单步执行一个指令,并且这条指令置位DBGM,CPU继续执行指令,直到DBGM被清零。当你给TI调试器“实时”命令时(进入实时模式),DBGM强制为0。令DBGM=0确保了允许调试和测试直接内存访问(DT-DMAs);内存和寄存器的值可传递到主处理器,用于更新调试器窗口。CPU在执行中断服务程序(ISR)之前将DBGM置位。当DBG
10、M=1时,来自主处理器和硬件断点的停止请求被忽略。如果你想要单步执行程序或在对时间要求不严格的ISR中设置断点,那么你必须在ISR的开始处增加一条CLRCDBGM指令。DBGM主要用在时间要求严格的程序代码部分的仿真,来阻止调试事件。DBGM使能或禁止调试事件,如下:0调试事件使能。1调试事件禁止。当CPU响应中断时,DBGM的当前值存储到堆栈中(当ST1存储在堆栈中时),然后DBGM置位。当由中断返回时,DBGM由堆栈中恢复。此位可分别由SETCDBGM指令和CLRCDBGM指令复位和清零。DBGM在中断操作期间被自动置位。复位时,DBGM置位。执行ABORTI(中止中断)指令也可以将DBG
11、M置位3.DSP28335外部中断流程可表示为:外设中断标志产生外设中断使能PIEx IFR置位PIExIER使能判断PIExACKIFR置位IER使能判断INTM位CPU执行中断程序3.中断总结: C28XX一共有16个中断源,其中有2个不可屏蔽的中断RESET和NMI、定时器1和定时器2分别使用中断13和14。这样还有12个中断都直接连接到外设中断扩展模块PIE上。说的简单一点就是PIE通过12根线与28335核的12个中断线相连。而PIE的另外一侧有12*8根线分别连接到外设,如AD、SPI、EXINT等等。这样PIE共管理12*8=96个外部中断。这12组大中断由28335核的中断寄存器IER来控制,即IER确定每个中断到底属于哪一组大中断(如IER |= M_INT12;说明我们要用第12组的中断,但是第12组里面的什么中断CPU并不知道需要再由PIEIER确定 )。接下来再由PIE模块中的寄存器PIEIER中的低8位确定该中断是这一组的第几个中断,这些配置都要告诉CPU(我们不难想象到PIEIER共有12总即从PIEIER1-PIEIER12)。另外,PIE模块还有中断标志寄存器PIEIFR,同样它的低8位是来自外部中断的8个标志位,同样CPU的IFR寄存器是中断组的标志寄存器。由此看来,CPU的所有中断寄存器控制1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村沟渠清淤合同范本
- 2025年度滑雪场教练员培训与青少年滑雪普及推广合同
- 2025年度教育管理信息平台数据迁移与集成合同
- 监理工作中施工单位的资金管理
- 农村垃圾地合同范本
- 190万投资理财合同范本
- 共同办厂合同范本
- 医师兼职合同范本
- 2025年金属真空镀膜行业深度研究分析报告
- 北京保安劳务合同范例
- 2024年电工(高级技师)考前必刷必练题库500题(含真题、必会题)
- 《证券投资学》全套教学课件
- 2024年全国各地中考语文试题汇编:名著阅读
- 公司组织架构与管理体系制度
- 2024-2030年中国涂碳箔行业现状调查与投资策略分析研究报告
- 2025高考语文步步高大一轮复习讲义65练答案精析
- 部编版八年级语文下册全册单元教材分析
- 2024-2030年中国派对用品行业供需规模调研及发展趋势预测研究报告
- 传染病监测预警与应急指挥大数据引擎平台建设需求
- 2023-2024年度数字经济与驱动发展公需科目答案(第5套)
- 2024年吉林省中考语文真题
评论
0/150
提交评论