历史上的今天
返回首页

历史上的今天

今天是:2025年03月13日(星期四)

正在发生

2020年03月13日 | 嵌入式arm学习总结(七)--中断-基于S3C2440

2020-03-13 来源:eefocus

1.中断执行过程


1)保存中断前PC值

2)保持中断前CPSR到spsr

3)修改CPSR的相应值,进入相应异常模式

4)执行异常

5)现将SPSR还原到CPSR

6)还原PC


   ARM硬件不支持相同异常中断嵌套

   如果相同异常嵌套,必须通过软件来保存CPSR和PC的值

   不同异常中断硬件支持嵌套


2.s3c2440的中断

共60个终端源,有五种中断触发方式


3.ARM中断响应过程--详细过程

中断初始化总共分为7步,只要初始化后,只要触发中断,那么程序直接跳入中断服务函数

第一步:配置I/O口为中断功能

第二步:配置外部中断触发模式

第三步: EINTPEND外中断挂起寄存器,清除时要写1相当于为0,清除中断请求标志,写0无效。可以不要,开机复位时自动为0.

第四步:EINTMASK外中断屏蔽寄存器,为0允许中断,为1屏蔽中断。是否屏蔽外中断

第五步:清除外部总中断标志:EINT8_23在寄存器SRCPND(中断源请求寄存器),目的允许中断


如果是外部中断需要清两个寄存器,一个为EINTPEND和SRCPND寄存器相应位

第六步:设置中断服务函数,告诉CPU外中断8-23的入口地址

第七步:intmask总中断屏蔽寄存器,写0开总中断,EINT8_23开8-23外部总中断

第八步:前面设置完以后,就可以执行按键中断程序了,如果退出按键测试中断,那么往下执行


*********************************************************************************************************************************

void KeyScan_Test(void)

{


    //第一步:配置I/O口为中断功能

    rGPGCON = rGPGCON & (~((3<<0)|(3<<6)|(3<<10)|(3<<12)|(3<<14|(3<<22)))) | ((2<<0)|(2<<6)|(2<<10)|(2<<12)|(2<<14|(2<<22))) ;  

    //第二步:配置外部中断触发模式,配置为下降沿,寄存器设定EINT0-EINT23的触发方式  

    rEXTINT1  = (2<<0)|(2<<12)|(2<<20)|(2<<24)|(2<<28);                    

    rEXTINT2  = (2<<12);

    //第三步: EINTPEND外中断挂起寄存器,清除时要写1相当于为0,清除中断请求标志,写0无效。可以不要,开机复位时自动为0.               

    rEINTPEND |=   (1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19);  //clear  清除8,,11,13,14,15,19六个中端中标志位,允许中断

    //第四步:EINTMASK外中断屏蔽寄存器,为0允许中断,为1屏蔽中断。  是否屏蔽外中断

    rEINTMASK &= ~((1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19));  //enable 

    //第五步:清除外部总中断标志:EINT8_23在寄存器SRCPND(中断源请求寄存器),目的允许中断

    //如果是外部中断需要清两个寄存器,一个为EINTPEND和SRCPND寄存器相应位

    ClearPending(BIT_EINT8_23);   

    //第六步:设置中断服务函数,告诉CPU外中断8-23的入口地址

    pISR_EINT8_23 = (U32)Key_ISR;


    //第七步:intmask总中断屏蔽寄存器,写0开总中断,EINT8_23开8-23外部总中断

    EnableIrq(BIT_EINT8_23); 

    //第八步:前面设置完以后,就可以执行按键中断程序了,如果退出按键测试中断,那么往下执行

    

}

*********************************************************************************************************************************


进入中断第一步:判断是哪一个中断,然后清除中断标志

推荐阅读

史海拾趣

EMBEST公司的发展小趣事

在XXXX年12月,EMBEST成为了Microsoft银牌合作伙伴。这一荣誉的获得标志着EMBEST在软件开发和服务方面得到了业界的广泛认可。作为Microsoft银牌合作伙伴,EMBEST将能够更好地利用Microsoft的技术和资源,为客户提供更优质的服务和解决方案。

Genesys Logic公司的发展小趣事

进入80年代,随着半导体市场的竞争加剧,“General Microcircuits”意识到仅凭自身力量难以迅速扩大市场份额。于是,公司采取了一系列并购策略,先后收购了多家在模拟电路、数字信号处理等领域具有技术优势的小型公司。这些并购不仅为“General Microcircuits”带来了丰富的产品线和技术积累,还显著增强了其研发能力和生产能力,使其在全球半导体市场的地位稳步提升。

国盛科技(BOCHEN)公司的发展小趣事

随着市场竞争的加剧,国盛科技意识到传统生产方式已难以满足市场需求。于是,公司开始积极探索自动化生产之路。经过不懈努力,国盛科技成功自主研发了电位器自动包装设备、自动测试设备等多种自动化设备,实现了产品流水化生产。这一突破不仅大大提高了生产效率,还使得电位器年产量突破一亿只,为国盛科技赢得了市场的广泛认可。

DAICO公司的发展小趣事

随着技术的不断进步,DAICO公司成功研发出一系列高可靠性的定制产品。这些产品以其卓越的性能和稳定性,赢得了客户的广泛认可。DAICO开始将业务扩展到商用飞机和其他高端商业行业,为卫星、雷达、导航、通信、电子战和导弹系统提供复杂操作不可或缺的一部分。

芯茂微电子公司的发展小趣事

芯茂微电子始终坚持品质至上和客户至上的原则,致力于为客户提供高品质、高性能的集成电路产品和服务。公司建立了完善的质量管理体系和客户服务体系,从产品研发、生产、销售到售后服务,每一个环节都严格把控,确保产品质量和客户满意度。正是凭借这种对品质和客户的执着追求,芯茂微电子赢得了客户的广泛信赖和赞誉。

Churod Electronics Co Ltd公司的发展小趣事

随着国内市场的饱和,中汇瑞德开始将目光投向海外市场。为了更好地服务全球客户,公司在美国设立了子公司,并在全球范围内建立了销售网络。同时,公司还积极参与国际展会和交流活动,与国际同行建立了广泛的合作关系。这些举措不仅拓展了公司的业务范围,也提升了公司的国际影响力。

问答坊 | AI 解惑

求助电路板设计

有没有会设计电子电路的朋友或者会E-CAD的朋友帮忙看一下这个题目,该怎么设计,因为是第一次接触这种设计电路的东西,一点头绪都没有。或者哪位朋友能提供下现成的设计样例参考一下,感激不尽, 根据你目前所学的电子技术知识,检索一个芯 ...…

查看全部问答>

偷车贼自曝偷车秘诀—— 送给有车的朋友

2004年12月30日,曾因偷盗汽车入狱的小崔邀请记者一起到街上转了转。在一辆汽车旁,他现场解说了自己所知道的“偷车招数”。小崔说,盗车贼想偷一辆车,从破坏防盗装置到开锁,乃至发动后开走汽车,最多不过两三分种的时间   去年9月,记者在一 ...…

查看全部问答>

晶体晶振选型指南手册

样品,报价请联络 吴小姐,021-54245281 49S/M 系列晶体        HC-49U/T        HC-49S        HC-49S/M        32.768KHZ 时钟晶体      ...…

查看全部问答>

做个最小系统

MCU的选用,重为学习可用SCT12 2052/4052,便于编程,如要做成微功耗麻雀俱全型可选用MSP430系列,   做个最小系统,当地不作显示,通过线缆或无线系统联至计算机系统进行各类处理(显示\\控制\\分析\\存档等….),通过RS232或RS485(内有供电或窃 ...…

查看全部问答>

zigbee技术

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 zigbee是最近提出的一种近距离、低复杂度、低功耗、低数据速率、低成本的双向无线通信新技术,主要用于近距离无线连接。它依据IEEE802.15.4标准,在数千个微小的传感器之间相互协调实现通信 ...…

查看全部问答>

STM32报价

STM32报价如何???有人知道吗???其实,我被ST害的苦了,早在STR710刚刚出来,看中了其USB和HDLC,想做一个USB—TO—HDLC,用户订单都有了,请了两个工程师开发了半年,终于失败了,最后改用FPGA。希望这次STM32不是来忽悠我们吧!!!…

查看全部问答>

关于输入捕获的问题

我新手,提的问题要是很简单请大家不要见笑啊。 1、要捕获两路信号,就是用普通的捕获模式(不是PWM输入模式),可以在TIM1的CH1和CH2同时捕获吗?或者CH1和CH3? 2、在输入捕获模式情况下,寄存器TIMx_CCRx 和TIMx_CNT 的值是怎么变化的啊? ...…

查看全部问答>

DEBUG下的变量和实际电路是同步的吗?

用stlink进行仿真。 变量值的显示刷新速度应该没有实际的电路快。我想问他们是一种什么关系。 我在观察触摸按键的时候,debug下的采集值并未达到按下的门限值,可是实际电路却按下了。如果debug的变量和实际电路的变量不是严格同步,那他们 ...…

查看全部问答>

LM3S811设置pll问题

SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |                   SYSCTL_XTAL_6MHZ); 设置以后为什么系统时钟总是显示32. ...…

查看全部问答>

【MSP430共享】MSP430电容式触摸感应库

MSP430电容式触摸感应库,很经典的,值得收藏!!! [ 本帖最后由 鑫海宝贝 于 2011-10-12 09:38 编辑 ]…

查看全部问答>