ARM中断基础知识 - 图文(3)
09 for(ch='a';ch<='z';ch++){
10 if( (VIC0RAWINTR & 0x1)==0x1){ 11 uart_putchar('+'); 12 EINT0PEND = 0x1; 13 }
14 uart_putchar(ch); 15 delay(); 16 } 17 }
按一下KEY打印出一个“+”,然后查询VIC0RAWINTR 寄存器,发现中断触发信号没有了,说明EINT0PEND的值直接影响到VIC0RAWINTR 的值,VIC0RAWINTR 跟随EINT0PEND变化,EINT0PEND的变化实时反映到VIC0RAWINTR上来,当然得看MASK有没有屏蔽掉中断触发信号啦。
信号接着往上面传送,直到cpu内核检测到中断触发信号并产生对应的操作为止: 使用VIC(中断向量控制器) VIC0INTENABLE的描述:
对应的清除寄存器VIC0INTENCLEAR的描述:
VIC0SELECT的描述:
我们这里选择IRQ方式,也可以是FIQ方式。 VIC0IRQSTATUS的描述:
VIC0FIQSTATUS描述:
我们选择IRQ方式,并且使能中断功能,看能不能到VIC0IRQSTATUS中查询到中断触发信号:
01 void mymain(void){ 02 unsigned char ch; 03 unsigned int temp=0; 04
05 /* set GPNIO to EINT mode , 10 --> Eint */ 06 temp = GPNCON ; 07 temp &= ~(0x3<<0); 08 temp |= (0x2<<0); 09 GPNCON = temp; 10
11 /* set EINT triger mode to falling eage ,01x = Falling edge */ 12 temp = EINT0CON0 ;
13 temp &= ~(0x7<<0); 14 temp |= (0x3<<0); 15 EINT0CON0 = temp; 16
17 /* EINT0MASK[0] = 0 : disMask EINT0 */ 18 temp = EINT0MASK ; 19 temp &= ~(0x1<<0); 20 //temp |= (0x1<<0); 21 EINT0MASK = temp; 22
23 /* VIC0INTENABLE[0]=1 : enable interrupt */ 24 /* clear bit by VIC0INTENCLEAR */ 25 temp = VIC0INTENABLE ; 26 temp &= ~(0x1<<0); 27 temp |= (0x1<<0); 28 VIC0INTENABLE = temp; 29
30 /* VIC0INTSELECT[0] = 0 : set to IRQ */ 31 temp = VIC0INTSELECT ; 32 temp &= ~(0x1<<0); 33 VIC0INTSELECT = temp; 34
35 uart_init(); 36 while (1) 37 {
38 for(ch='a';ch<='z';ch++){
39 if( (VIC0IRQSTATUS & 0x1)==0x1){ 40 uart_putchar('+'); 41 EINT0PEND = 0x1; 42 }
43 uart_putchar(ch); 44 delay(); 45 } 46 }
按下KEY出现下面的现象: 按一次打印一个“+”,说明
如果是把VIC0INTENABLE对应位设置成disable,那么就会屏蔽掉中断信号,这里相当于又建立了一道关卡,它没同意就不能把信号传达到上一层。
1 /* VIC0INTENABLE[0]=0 : disable interrupt */ 2 /* clear bit by VIC0INTENCLEAR */ 3 temp = VIC0INTENABLE ; 4 temp &= ~(0x1<<0); 5 VIC0INTENABLE = temp;
现象:
怎么按KEY也不会打印出“+”,说明中断信号被屏蔽了。
当信号传达到这里的时候还得继续往上,还需要经过中断优先级的寄存器,判别那个中断优先级最高,这个只影响到中断的顺序,不影响中断信号的有无。但是在cpu内核的最近的地方还有个中断的开关,是个总开关——CPSR的I/F-bit,默认是关闭的。这个一打开了就会把中断信号送给cpu内核了。
打开最后这个总开关有两个写法,一个是在汇编里面写,一个是在c语言里面的嵌入汇编里面写,我们这里在c语言潜入汇编来写:
1 /* init CPSR I-bit */ 2 //0101,0011 3 __asm{
4 mov r0,#0x53 5 msr cpsr,r0 6 }
但是编译的时候有警告,说应该吧这个r0定义成一个变量:
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




