下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中断的关闭与开放开放MC56F8257中某个模块中断,通常需要开放总中断及模块中断来实现。这两部分 缺一不可,并且开放总中断在前,开放模块中断在后。同理,关闭MC56F8257中某个模块 中断,需要关闭总中断及模块中断来实现,先关闭模块中断,再关闭总中断;如果允许中断 嵌套情况,不需关闭总中断。开放MC56F8257总中断,通过清中断控制寄存器(INTC_CTRL)的INT_DIS位;关 闭总中断,需置该位即可,具体代码如下:#define EnableInterrupt() INTC_CTRL&=INTC_CTRL_INT_DIS_MASK#define DisableInterrupt()
2、 INTC_CTRLI=INTC_CTRL_INT_DIS_MASK开放或关闭模块中断,需设置模块内部的控制寄存器的相应位。如开放QSCI模块的接 收中断0,需置位QSCI控制寄存器1(QSCIx_CTRL1)中的RFIE位;关闭该中断,清RFIE 位即可,具体代码如下:#define EnableQSCIReInt(O) QSCI_C1(0)I=(QSCI1_CTRL1_RFIE_MASK)#define DisableQSCIReInt(O) QSCI_C1(0)&=(QSCI1_CTRL1_RFIE_MASK)中断优先级的设置DSP56800E内核支持5级中断:LP、0、1、2和3,其优
3、先级别依次升高。最低优先级 LP只能由系统SWILP指令产生;02优先级用户可以编程设置,主要用于外设和外部中断 请求;级别3是最高优先级且不可屏蔽。具体设置某个中断源的中断优先级,可通过设置中断优先级寄存器 (INTC_IPR0INTC_IPR7)中的相应位。如设置QSCI中断优先级,通过设置中断优先级 寄存器(INTC_IPR2)中的QSCI0_RCV位实现,该位具体含义见表1所示。表1 Q&CI的中断优先级设置QSCIO_RCV 位值很明00禁止中断忒夏位后默认牛01中断优先缀为010中断优先缀为111中浙优先毂为艺从表1看出,QSCI中断可配置三个不同级别,即优先级0、1和2。如果用户
4、不配置 QSCI中断的优先级,系统复位时,自动分配其优先级为0;但是复位后,紧接着初始化QSCI 模块,其优先级由0级变为2级。设置中断屏蔽通过设置DSP56800E内核中的状态寄存器SR的10、I1位,实现屏蔽不同级别优先级 中断,具体设置如表2所示。表W中断屏蔽位的设置1011位的值渺月co允在所有中断VI屏蔽优先级为0的中断屏蔚优先缀为。和1的中断* 11屏簸殆先级为。、1和N的中斯屏蔽某个优先级中断,可通过使能中断优先级相应的优先级中断来实现。例如,屏蔽优 先级0中断,可通过使能优先级1,2,3中断实现,具体代码如下:#define EnInt(1) (asm(bfset #0 x01
5、00,SR); asm(bfclr #0 x0200,SR);另外,也可以同时屏蔽2个以上级别中断,如屏蔽优先级0,1,2中断,通过使能优先级 3中断实现,具体代码如下:#define EnIn t(3) (asm(bfset #0 x0300,SR);在设置中断屏蔽时,应注意的是主函数的屏蔽中断优先级代码与中断服务程序的相应代 码应保证所需的中断不被屏蔽。中断矢量表的定义MC56F8257的67个中断源,其矢量号从0到66 9。每个中断源的中断服务程序首地 址放入中断矢量表中。当有中断请求时,CPU通过中断矢量号在中断矢量表中找到其中断 服务程序的首地址,根据这个首地址找到中断服务程序,进行
6、中断处理。中断矢量表在FLSAH中的位置由向量基地址寄存器(VBA)决定。向量基地址寄存器 VBA12:0为21位中断矢量表首地址的高13位,低8位自动补0。具体到某个模块中断服 务程序首地址在中断矢量表中的位置,由向量基地址寄存器(VBA)及控制寄存器(INTC_CTRL)的VAB位决定;向量基地址寄存器VBA12:0为其在中断矢量表地址20:0 的高13位20:8,控制寄存器(INTC_CTRL)的VAB位为其地址的7:1,低位补0。系统复位后,VBA的复位值为0 x0000,系统进入复位中断(矢量号为0),相应的起始 地址在0 x00 0000处,这个过程系统自动完成。如果开放某个模块中
7、断,需要将该模块中断 服务程序的首地址加载到中断矢量表中的相应位置。具体过程如下:首先建立中断矢量表; 没有开放的模块中断,在表中对应位置放入空函数的首地址(通过JSR isrDummy实现); 开放的模块中断,在表中对应位置放入中断服务程序的首地址,通常中断服务程序由函数实 现,在这里通过放入具体函数首地址实现,如开放QSCI0的接收中断(矢量号为32),其中 断服务函数为isrSCI0_Recv,即可通过在矢量表中加入JSR isrSCI0_Recv代码实现,具体如 下:volatile asm void _vect(void);#pragma define_section interru
8、pt_vectors interrupt_vectors.text RX#pragma section interrupt_vectors beginvolatile asm void _vect(void)JSR init_MC56F824x_5x_ISR_HW_RESET /* Interrupt no. 0 (Used) - ivINT_Reset */JSR isrDummy /* Interrupt no. 1 (Used) - ivINT_COPReset */JSR isrDummy /* Interrupt no. 2 (Unused) - ivINT_Illegal_Inst
9、ruction */JSR isrSCI0_Recv /* Interrupt no. 32 (Used) - ivINT_QSCI0_RxFull */JSR isrDummy /* Interrupt no. 65 (Unused) - ivINT_GPIO_A */JSR isrDummy /* Interrupt no. 66 (Unused) - ivINT_LP */#pragma section interrupt_vectors end其中,isrDummy的函数形式如下:void isrDummy(void)该函数首地址用来充当未开放模块中断的中断服务程序的首地址,加载到中断矢量表中。对于飞思卡尔codewarrior的中断使用,一般有3种方法:把#pragma TRAP_PROC放在中断程序前面,并把中断向量表放到*.prm。例如:#pragma TRAP_PROCvoid PIT1(void)/your code或者使用关键词interrupt,并把向量表加入*.prm。例如:interrupt void intPIT1(void)/your code向量表的首地址放入*.prm例如:/VECTOR ADDRESS 0 xFFEA Int_ico2/输入捕捉中断 pt2,pt3=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年下半年贵州安顺市关岭兴关工业发展有限公司及旗下子公司招聘第一批考察合格及拟聘用人员笔试历年参考题库附带答案详解
- 2026七年级上《有理数》易错题解析
- R语言的流行病学应用 课件 第16章 因果推断
- 2026四年级下新课标羽毛球基本技术
- 食品生产设备订购及维护合同协议合同三篇
- 医院标准化药房建设规划方案
- 成型车间自动线故障紧急修复流程
- 大宗材料进场检验制度程序安排
- 证照年检资料准备操作指南
- 礼宾车辆停靠调度管理规范
- 2025年华侨港澳台学生联招考试英语试卷试题(含答案详解)
- 贵州中医药大学时珍学院《C#程序语言设计》2023-2024学年第一学期期末试卷
- 法院委托评估价格异议申请书
- 卫生事业管理学:第十一章 社会健康资源管理
- 电工二级技师试题及答案
- DL-T5706-2014火力发电工程施工组织设计导则
- 杆上变压器安装施工方案
- 泛血管疾病抗栓治疗中国专家共识解读
- 巨量广告投放培训课件
- 脑梗塞的早期识别与处置护理课件
- 2023江苏省泰州市中考物理真题试卷和答案
评论
0/150
提交评论