- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EINT外部中断
ARM异常中断
IRQ(一般中断)和FIQ(快速中断)不是具体的中断源,而是中断的类型。我们是可以将一个中断源的类型设置成FIQ也可以设置成IRQ。在使用FIQ响应的时间比IRQ要短,其他方面没有什么区别。但是一般情况下,在一个平台内,我们只能将一个中断源设置成FIQ。
S5PV210的中断源
总共有93个,其中外部中断有32个。
93个中断源分成了4个中断控制器(VIC)
具体中断源(210手册p1-5)
注意:所有的中断源产生的中断最终都有VIC0中断控制器提交给S5PV210内核,所以,在中断服务函数中做清除中断处理时,要将4个的VICADDRESS寄存器都要做写操作。
外部中断设计流程
中断控制:1)程序状态寄存器CPSR的F位和I位
2)中断模式
S5PV210中断控制器的特点
? Supports 93 vectored IRQ interrupts
? Fixed hardware interrupts priority levels
? Programmable interrupt priority levels
? Supports Hardware interrupt priority level masking
?Programmable in5terrupt priority level masking
?Generates IRQ and FIQ
?Generates Software interrupt
昑est registers
?Raw interrupt status
?Interrupt request status
?Supports Privileged mode for restricted access
分析GEC210平台的原理图
EINT16是一个二级中断,对应的一级入口是EINT16_31。
中断的初始化(设置SFR)
将GPH2_0设置成EINT16
设置EINT16的触发方式
设置外部中断的滤波器
4、外部中断pending(判断/清除寄存器)
外部中断的开关(屏蔽)寄存器
设置中断类型
EINT16-----VIC0INTSELECT
7、中断向量地址寄存器
VIC0ADDRESS
读:该寄存器放置的是正在响应的入口中断处理程序的入口地址。该入口地址是在对应中断源向量地址寄存器(VIC0VECTADDRn)中初始化的。
写:向该寄存器写0,用来清除中断。
VIC0VECTADDRn
在中断初始化的时候,将中断处理程序的入口地址保存到该寄存器。
中断的开关寄存器
程序的设计
程序入口(start.S)
.global _start
.global IRQ_handle
_start:
ldr sp, =0 @初始化栈,stack放在DDR2
mov r0, #0x53
msr CPSR_cxsf, r0 @ARM进入管理模式,并关闭FIQ、打开IRQ
bl clock_init @初始化210的系统时钟
b main @调用了main,进入中断初始化
IRQ_handle: @IRQ中断的处理程序,在ARM响应IRQ中断时,会进入该程序
ldr sp, =0xD0037F80 @初始化IRQ模式的stack
sub lr, lr, #4 @修正返回地址
stmfd sp!, {r0-r12, lr} @保存现场,入栈
bl Irq_Isr @调用C环境的程序,去处理IRQ中断,在Irq_Isr函数中,确定中断源。
ldmfd sp!, {r0-r12, pc} @退出现场,并实现中断的返回
2、main函数
void isr_key(void) //EINT16中断处理程序
{
GPJ2DAT ^= (10); //toggle led
intc_clearvectaddr(); // clear VIC0ADDRESS
EXT_INT_2_PEND |= 10; // clear pending bit
}
int main(void)
{
//GPJ2CON[3:0] = 0001;GPJ2_0---output
GPJ2CON = ~(0xf0);
GPJ2CON |= (10);
//interrupt controller init
int_init();
GPH2CON |= 0xF; // GPH2_0 -- EXT_INT[16]
//EXT_INT[16]: Falling edge triggered
EXT_INT_2_CON
您可能关注的文档
最近下载
- 中国吞咽障碍评估与治疗专家共识(2017年版)第一部分+评估篇.pdf
- 22G101 三维彩色立体图集.docx VIP
- 汽车维护与保养汽车维护与保养概述课件.pptx VIP
- 人教版部编道德与法治六年级上册全册课件【最新】.pptx
- 《结直肠癌》课件.ppt VIP
- 《AIGC应用实战:写作、绘图、视频制作、直播》课件 第七章 即梦的使用方法.pptx VIP
- 人教版高中物理必修第三册精品课件 第10章 静电场中的能量 5.带电粒子在电场中的运动.ppt VIP
- 长城汽车招聘测评题.pdf
- 办理食品经营许可证操作流程图.pdf VIP
- 2025浙江杭州市能源集团有限公司招聘6人笔试参考题库附带答案详解.docx
文档评论(0)