当前位置:首页 > 单片机 > 单片机
[导读]ARM中断控制系统按键驱动程序设计一.Arm中断控制系统1.查询方式程序不断地查询设备的状态,并做出相应的反应。该方式实现比较简单,常用在比较单一的系统中,比如:一个温控系统中可以实用查询的方式不断检测温度变

ARM中断控制系统

按键驱动程序设计

一.Arm中断控制系统

1.查询方式

程序不断地查询设备的状态,并做出相应的反应。该方式实现比较简单,常用在比较单一的系统中,比如:一个温控系统中可以实用查询的方式不断检测温度变化。

特点:实现简单;但CPU利用率很低,不适合多任务的系统。

2.中断方式

当事件发生时,硬件会设置某个寄存器;CPU在每执行完一个指令时,查看这个寄存器,如果所关注的事件发生了,则中断当前程序,跳转到一个固定的地址处理这个事件,处理完后返回到被中断的程序中继续运行。

特点:实现相对复杂,但效率较高,是常用的方法。

中断处理流程:

(1)中断控制器汇集各类外设发出的中断信号,然后通知CPU;

(2)CPU保存当前程序的运行环境,然后调用中断服务程序(ISR)来处理中断;

(3)在ISR中通过读取外设的相关寄存器来识别中断的类型,并进行相应的处理。

(4)清除中断:通过读写在相关中断控制寄存器和外设相关寄存器来实现;

(5)恢复被中断程序的执行环境,继续执行被中断的程序。

简化版:

1.汇集中断信号,通知CPU;

2.CPU保存当前运行环境,调用中断服务程序ISR

3.ISR读取寄存器识别中断类型

4.清中断

5.恢复中断程序的执行环境;

速记版:会(汇集)C(CPU)I(IRS)请(清中断)回复(恢复);

S3c2440支持60个中断源,含子中断源

SUBSRCPND(用于标明子中断源有没有发生中断)【发生中断被置1,清除子中断写入1】

SUBSRCPND寄存器用来表明子中断(如:INT_RXD0)是否发生。S3C2440有15个子中断,SUBSRCPND中每一位对应一个子中断,当这些子中断发生时,相应的位置被置1.清除子中断只需向SUBSRCPND寄存器中相应位写入1.

INTSUBMSK(屏蔽SUBSRCPND的中断,置1时屏蔽子中断)

INTSUBMSK寄存器用来屏蔽SUBSRCPND寄存器所标的中断。INTSUBMSK

寄存器中某位被设为1时,相应的子中断被屏蔽。设为0时,表示子中断被允许。

SRCPND(用于标明中断源有没有发生中断)【发生中断被置1,清除(子)中断写入1】

SRCPND中某一位用来标明一个(或一类)中断是否已经发生。例如:SRCPND

寄存器中的子中断INT_RXD0发生了,且没有被INTSUBMSK屏蔽,则SRCPND的INT_UART0位被置1. SRCPND寄存器的清除与SUBSRCPND寄存器相似,若想清除某一位,往此位写入1.

INTMSK(被置1时,中断屏蔽;置0时,中断允许)

INTMSK寄存器用来屏蔽SRCPND所表示的中断。INTMSK某位被置为1时,对应的中断被屏蔽;设置为0时,相应中断被允许。

INTMSK只能屏蔽设为IRQ的中断,不能屏蔽设为FIQ的中断。

INTMODE(置1时,FIQ模式;置0时,IRQ模式)

当INTMODE寄存器中某位被设置为1时,它所对应的中断源会被设置为FIQ模式,即此时中断发生时,CPU将进入快速中断模式,这通常用来处理特别紧急的中断。当该位被置为0时,表示为IRQ模式。

FIQ & IRQ

(1)IRQ模式下,中断处理程序需要自己保存R8到R12这几个寄存器,退出中断处理时需要自己恢复这几个寄存器,而FIQ模式由于这几个寄存器都有back寄存器(fiq_r8….),模式切换时CPU自动保存这些值到back寄存器,退出FIQ模式时自动恢复,所以这个过程FIQ比IRQ快。

(2)FIQ比IRQ有高的优先级,优先处理FIQ。



#defineGLOBAL_CLK1

#include

#include

#include"def.h"

#include"option.h"

#include"2440addr.h"

#include"2440lib.h"

#include"2440slib.h"

#include"mmu.h"

#include"profile.h"

#include"memtest.h"

voidkey_init(void);

staticvoid__irqkey_handler(void);

voidbeep_init(void);

voidbeep_run(void);

/*************************************************

Functionname:delay

Parameter:times

Description:延时函数

Return:void

Argument:void

Autor&date:Daniel

**************************************************/

voiddelay(inttimes)

{

inti,j;

for(i=0;i

for(j=0;j<400;j++);

}

/*************************************************

Functionname:Main

Parameter:void

Description:主功能函数

Return:void

Argument:void

Autor&date:Daniel

**************************************************/

voidMain(void)

{

beep_init();//设置对应端口为输出

MMU_Init();//

key_init();

while(1);

}

/*************************************************

Functionname:key_init()

Parameter:void

Description:按键K1的初始化函数

Return:void

Argument:void

Autor&date:Daniel

**************************************************/

voidkey_init(void)

{

rGPGCON&=~(0x3<<0);/*seteint8asinterrupt*/

rGPGCON|=(0x2<<0);

rEXTINT1&=~(0xf<<0);/*seteint8withlowlevel*/

rEINTPEND|=(1<<8);//写1清EINT8中断

rEINTMASK&=~(1<<8);//使能中断不屏蔽

/*设置ISR*/

pISR_EINT8_23=(U32)key_handler;

EnableIrq(BIT_EINT8_23);//8-23共用一个中断号

}

/*************************************************

Functionname:key_handler()

Parameter:void

Description:按键K1的中断服务子程序

Return:void

Argument:void

Autor&date:Daniel

**************************************************/

staticvoid__irqkey_handler(void)

{

/*判断是否是按键K1产生的中断*/

if(rINTPND==BIT_EINT8_23)//rINTPND判断中断是否被响应,1响应;0不响应

{

ClearPending(BIT_EINT8_23);

if(rEINTPEND&(1<<8))//外部中断相应位来判断对应寄存器是否发生中断,EINT8是否发生中断

{

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭