基于s5pv210的中断分析学习

(外部中断描述的位置)
section 2 -> general purpose input/output

分析X210开发板的按键对应的EINT编号:
EINT2、EINT3、EINT16、EINT17、EINT18、EINT19

--------------------------------------------------------------
CON:

External Interrupt Control Registers:
(EXT_INT_0_CON,R/W, Address = 0xE020_0E00) 

EXT_INT_0_CON [31:0]
此时学习的按键中断用到EXT_INT[3]  EXT_INT[2]
这里的CON 作用是选择中断触发模式
此处使用  ----   
EXT_INT_0_CON[2]     [10:8]
因为bit[11]是reserved
所以可以直接将四位一起用
----- 010 = Falling edge triggered
-----0010


EXT_INT_0_CON[3] [14:12]
bit[15] reserved
--
----- 010 = Falling edge triggered
-----0010

 External Interrupt Control Registers
 (EXT_INT_2_CON, R/W, Address = 0xE020_0E08)  

后面还有4个按键,是GPH2CON[3:0]
显示是EXT_INT[16~19]
对应 EXT_INT_2_CON [0~4]
同样--
EXT_INT_2_CON[0] [2:0]      reserved [3]
EXT_INT_2_CON[1] [6:4]      reserved [7]
EXT_INT_2_CON[2] [10:8]      reserved [11]
EXT_INT_2_CON[3] [14:12]   reserved [15]
------>
可以直接将四位一起用
----- 010 = Falling edge triggered
-----0010

------------------------------------------------------------------

---
MASK
(各个外部中断的使能/禁止开关)
External Interrupt Control Registers 
(EXT_INT_0_MASK, R/W, Address = 0xE020_0F00) 
--
EXT_INT_0_MASK 

EXT_INT_0_MASK[2]         bit[2]
EXT_INT_0_MASK[3]         bit[3]

EXT_INT_2_MASK
(EXT_INT_2_MASK, R/W, Address = 0xE020_0F08) 

EXT_INT_2_MASK[0]   bit[0]
EXT_INT_2_MASK[1]   bit[1]
EXT_INT_2_MASK[2]   bit[2]
EXT_INT_2_MASK[3]   bit[3]

0 = Enables Interrupt     
1 = Masked 

0是使能 1是屏蔽


----------------------------------------------------------

PEND
(中断挂起寄存器)
(没有发生中断时,该寄存置0 ;发生中断时,硬件会自动将该寄存器相对应的中断的位置1)
(发生中断后并处理完后,我们应该手动将该位置0,手动代码实现)
(这个PEND寄存器的位就相当于是一个标志)
(如果中断发生置1后,没来得及处理,他就会挂起,这个位将会一直是1)
(直到运行处理后,手动清 0 ,才表现为这个中断已经处理)
 External Interrupt Control Registers
 (EXT_INT_0_PEND, R/W, Address = 0xE020_0F40) 

EXT_INT_0_PEND[2]      bit[2]
EXT_INT_0_PEND[3]      bit[3]


 External Interrupt Control Registers 
(EXT_INT_2_PEND, R/W, Address = 0xE020_0F48) 

EXT_INT_2_PEND[0]    bit[0] 
EXT_INT_2_PEND[1]       bit[1] 
EXT_INT_2_PEND[2]       bit[2] 
EXT_INT_2_PEND[3]       bit[3] 


0 = Not occur      1 = Occur interrupt


初始化GPIO
开始轮询模式学习时,用的是输入模式
现在用中断处理,就要设置为中断模式
--
GPH0CON[2]  [11:8]  
GPH0CON[3] [15:12]

0000 = Input 
1111 = EXT_INT[2] 

1111 = EXT_INT[3]


GPH2CON[0]  [3:0] 
GPH2CON[1]  [7:4]
GPH2CON[2]  [11:8]
GPH2CON[3]  [15:12] 

0000 = Input
1111 = EXT_INT[16] 
1111 = EXT_INT[17]
1111 = EXT_INT[18] 
1111 = EXT_INT[19] 

中断方式处理按键编程实践
1、外部中断对应的GPIO模式设置
2、中断触发模式设置
3、中断允许、清挂起
4、中断处理程序isr编写(包含真正处理的代码 以及 及时清除PEND标志位)
(注意:EINT16~31是共享中断,要在程序中以PEND 的标志位做以判别)
(rEXT_INT_2_PEND 对应有bit 7位  前4位 分别对应 四个按键的前4位 所以在这分别判断哪位按下位1 即可)
5、总结对比:轮询方式处理按键和中断方式的差异
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值