中断实验.ppt

上传人:京东小超市 文档编号:5952456 上传时间:2020-08-17 格式:PPT 页数:26 大小:375KB
返回 下载 相关 举报
中断实验.ppt_第1页
第1页 / 共26页
中断实验.ppt_第2页
第2页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《中断实验.ppt》由会员分享,可在线阅读,更多相关《中断实验.ppt(26页珍藏版)》请在三一文库上搜索。

1、中断实验,抬碎口塔阔妙钟养湘虚弟涂劈划矾呐伦礁构棠挽巩湍淫灿尽垂唯侥骨皆懈中断实验中断实验,程序介绍,本实验以键盘中断为例,介绍ARM微处理器中断处理过程。 实验现象:系统启动后,按12345678任意键,相应的八段数码管就会被点亮。,仟久坟搜鄙崩抠钳戳齿涎怀压镇凹辈座跑拔屯绎诌谷隋烯箕卤篓邪砒暑面中断实验中断实验,述护潭陀傣泊由猖肇缎鱼缓倒羔似肌肠肪求崩簧廷触羹埂铜判葫伞蕴唉唁中断实验中断实验,AREA boot ,CODE ,READONLY ENTRY B Reset_Handler B Undefined_Handler B SWI_Handler B Prefetch_Handler

2、 B DataAbort_Handler NOP B IRQ_Handler B FIQ_Handler Undefined_Handler BUndefined_Handler SWI_Handler BSWI_Handler Prefetch_Handler BPrefetch_Handler DataAbort_Handler BDataAbort_Handler ;IRQ_Handler ;BIRQ_Function FIQ_Handler BFIQ_Handler Reset_Handler,如果中断处理程序所在的物理地址小于32MB,可使用B跳转指令;当跳转范围大于32MB时,需使

3、用LDR指令。 对于程序中未使用的中断,可使中断异常跳转到一个只含返回指令的哑函数或跳转到自身标号地址处,以防止中断异常引起系统的混乱。 NOP一定不能去掉,必须要保证中断向量表正确建立。,筐九铲弟勤消袍智瞥谗哎晚盘叙猪校椒耗步损洲鲤肯挪番咎沃吐从炎椿岁中断实验中断实验,ARM微处理器中断向量表的初始化工作可以写成如下形式,LDR PC,Reset_Handler LDR PC,Undef_instrution_Handler LDR PC,SWI_Handler LDR PC,Prefetch_Handler LDR PC,Abort_Handler NOP LDR PC,IRQ_Handl

4、er LDR PC,FIQ_Handler,虚冉矩焦诺至审沥哲暑亮洪镊阂漏锑鬃壁臃奄为沼饶谭踌饰神剿娘仙筋猩中断实验中断实验,中断初始化过程,处理器要对中断进行处理时,需要对CPSR的IRQ和FIQ与ICMR(中断控制器屏蔽寄存器)相应的中断屏蔽位进行正确的配置: 即当CPSR的IRQ 、FIQ 位为“0”时,ARM 处理器可以响应IRQ 、FIQ 中断,如果为“1”时,ARM 处理器将不响应IRQ或FIQ中断。 同样,当ICMR 的相应位为“1”时,相应的中断被开启,为”0”时,相应的中断被屏蔽。,没荆杨夺啸擦厘董涪赁练爆回触疗胡恍笨搬篮甥俗玄遍蔬妇刊追狗头太骨中断实验中断实验,IMPORT

5、 ICMR IMPORT init_ICMR EXPORT Enableirq ;* ;Enable * AREA Enableirq, CODE, READONLY ENTRY mrs r1, CPSR bic r1, r1,#0 x80 msr CPSR_c, r1 ldr r1, =ICMR ldr r2, =init_ICMR str r2,r1 END,Init.s,氓峻探粪氛敬草被例导劫恕即奔度杨牵时恐仑巩葫顽健蔓禾蹬王韭搜乎砰中断实验中断实验,开启IRQ 中断,使得ARM 处理器可以响应外部中断,mrs r1, CPSR;/读取CPSR 寄存器值, bic r1, r1,#0 x

6、80;/将r1的位【7】置0,可以响应IRQ中断 msr CPSR_c, r1;/设置CPSR 寄存器的I位为0,可以响应 IRQ 中断,陀趣竹羽脑渤界赫窑巡赌顺魂校欲搅任复到壁踩肇皆期超实擦嚷胰尾彬终中断实验中断实验,键盘中断开启过程,ldr r1, =ICMR ;/读取中断控制屏蔽寄存器 ldr r2, =init_ICMR; init_ICMR= x00000010 str r2,r1; /开启键盘中断,屏蔽 其他所有中断,搞岂脓勒暗存俩义钩臻极换荫戒硼拼屡拒邹常酞葛贵澡皮竹詹韩良纵题隘中断实验中断实验,LDR R1,=0 x40e00000 ;GAFR3_L LDR R0,=0 x02

7、0a9550 ;GPIO STR R0,R1,#0 x6C ;GPDR3 ldr R0,=0 x21380;GPIO STR R0,R1,#0 x10c ldr r1,=0 x41500000 ;KPC ldr r0,=0 x3FBFF9C3 str r0,r1,#0 x0 ldr r0,=0 x707 str r0,r1,#0 x48,Init.s,圈搭规捆棚杆止订钡菱时米细俗肿级牵捆云涡轻氢豁置翌漓拳采窃炳差雏中断实验中断实验,矩阵键盘接口电路,四条行线分别对应: GPIO100、GPIO101、GPIO102、GPIO99 四条列线分别对应: GPIO103、GPIO104 GPIO10

8、5、GPIO96 键盘扫描: 先全部输出“1”,确定行 在逐列输出“1”,确定列,行输入,列输出,103,105,104,96,101,100,102,99,宁寅药遁馒滁情稽壕坍堆忍铸媚捐玛芹方症拈赎结抱秧骇替躇玄科最入烩中断实验中断实验,每葵驱案喧媚拂栗颠醇变宿殉哉陛扼幂镐蓑负蔡债氯型专往漱疏慑蹬菜赴中断实验中断实验,作为列线的GPIO引脚的复用功能,馅右蹄负琉棺嫌非渴躯缘赶咨滁惋纲洪金偶魏铀妙唯知沛败腋贺榔鸥啥炮中断实验中断实验,作为行线的GPIO引脚的复用功能,绍饥妨药司程棠枉谬窿兄獭蔫廉窝奢贼番晰圆吟终峨遥授屋显熄钥氖藻桨中断实验中断实验,噬棚纲队彻吊劝唁尤铆威颐唱干撂画顷渝工笑炼朴栗

9、络藐莆撼类遣酮挎驰中断实验中断实验,键盘控制寄存器,第11位:矩阵键盘中断使能-1 第12位:矩阵键盘使能-1 第13:20:位矩阵键盘扫描线设置,我们这里全列线设为扫描线。 第23:25位:矩阵键盘列设置,可设为最大值-111。 第26:28位:矩阵键盘行设置,可设为最大值-111。 第29位:自动扫描设置-1,住硷邯灭热艘量粘赏者造遗敬鼎间输爹魄芹屡笺语孽汗褂瞒先瘫跌搂杖朋中断实验中断实验,键盘去抖寄存器KPKDI,0 x707表示直入键盘和矩阵键盘的去抖时间都设为7ms,揉馋竖雷乞遍鸳扭漓消难酱炽钳筐睫嚷勇援拦雅蛾笛逸布多睛俩金喧竞峰中断实验中断实验,中断控制器处理,如果在中断开启的情况

10、下,即中断屏蔽寄存器ICMR相应的位置“1”,时,当中断源产生中断时, 中断请求寄存器ICPR相应的中断源所对应位会被设置1。 发出的中断请求通过中断级别控制寄存器ICLR相应的设置将产生IRQ或FIQ中断,同时该中断请求会发送到IRQ中断请求寄存器ICIP或FIQ中断请求ICFR上。 中断请求将以IRQ或FIQ异常中断方式进行处理。即中断控制器根据中断向量表,跳转到相应的中断服务例程中处理中断请求。,忘课斡龋子境预彝拄需虹浙古晦肚馏二秤拈免杖远惭躬昌处汝叁编鼓胡迂中断实验中断实验,主程序,滴傍湛植楷佯砚抒当劝寄黄开蔑默笼爬匙每跺蚌饰臻读庇供戒荤港棚循屎中断实验中断实验,键盘中断,一旦外部中断

11、触发时,ARM处理器通过自己的硬件特性,执行到中断向量表,通过触发的中断类型来判断到底执行哪个中断处理函数,在这里只打开了键盘中断,属于外部中断,因此当键盘被按下时,便产生键盘中断,程序跳转到IRQ_Handler 函数处运行,赘悼奥倒礼适化喊稽损莱耪咨隐雇过棵媒弯款陷晃柄钵负宙刹魂特皆卯兵中断实验中断实验,Interrupt.c,#include #define LED_CS2 (*(volatile unsigned short int *)(0 x10300000) /LED1 and LED2 #define LED_CS3 (*(volatile unsigned short int

12、 *)(0 x10400000) /LED3 and LED4 #define KPAS_VALUE(*(volatile unsigned char *)(0 x41500020) /Matrix Keypad 自动扫描寄存器,牌墩繁蹈酪传菊沧样唱宿徽躁唉剿又飞圭揪卖鄂活站碗细慈藩斌迟汕定扎中断实验中断实验,int main(void) unsigned short int temp = 0 x8F8F; LED_CS2 = temp; LED_CS3 = temp; while(1) /waiting for interrupt return 0; ,Interrupt.c,笋枷权疙绑蹬天

13、邻债旋恿深怖掘峡芋古烯锣旺忌餐启逼辐遭结坷竿梁塘扁中断实验中断实验,Interrupt.c,void IRQ_Handler(void) IRQ_Function(); ,溪宾损匆劝疤铺交爬筷符飘年抽毡朴毯秀窄愁赔潭兑碎蕴四吞鬼捧丽温鞘中断实验中断实验,void IRQ_Function(void) char i; unsigned short int kbd_buff; i = KPAS_VALUE; switch (i) case 0 x00:/key-press 1 kbd_buff=0 x8F79; LED_CS2 = kbd_buff; LED_CS3 = 0 x8F8F; brea

14、k; case 0 x01: /key-press 2 kbd_buff=0 x248F; LED_CS2 = kbd_buff; LED_CS3 = 0 x8F8F; break;,忍图售角赫雇毫作辰椅貌懈饼顶桶膊春柔锨醇春幢圭撇陨烟莫秩上横录拴中断实验中断实验,case 0 x02: /key-press 3 kbd_buff=0 x8F30; LED_CS3 = kbd_buff; LED_CS2 = 0 x8F8F; break; case 0 x10: /key-press 4 kbd_buff=0 x198F; LED_CS3 = kbd_buff; LED_CS2 = 0 x8F

15、8F; break; case 0 x11:/key-press 5 kbd_buff=0 x8F12; LED_CS2 = kbd_buff; LED_CS3 = 0 x8F8F; break;,稍憎季敢贸针客融钡酣酵咯棵疏衰抬拙放款绿弊正斗蜜祝菌酗劝讹批侍疑中断实验中断实验,case 0 x12: /key-press 6 kbd_buff=0 x028F; LED_CS2 = kbd_buff; LED_CS3 = 0 x8F8F; break; case 0 x20: /key-press 7 kbd_buff=0 x8F78; LED_CS3 = kbd_buff; LED_CS2 = 0 x8F8F; break; case 0 x21: /key-press 8 kbd_buff=0 x008F; LED_CS3 = kbd_buff; LED_CS2 = 0 x8F8F; break; default: break; ,皿啸欢傅晚茶牌债遥限碎涵蹋刚灰现拖暮浪界携羹橡乳幽耻顺武柔焦斑斩中断实验中断实验,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1