中断机制isr

本文详细介绍了嵌入式系统中断处理的过程,包括异常向量表的位置选择、现场的保存与恢复,以及IRQ中断处理流程。重点讲解了如何识别中断源、调用中断服务例程,并探讨了中断寄存器、中断状态和中断嵌套。此外,还提及了外部中断源如GPIO的工作方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中断时异常的一种。

异常向量表,可以放到0x00000000或者放到0x300000008

保存和恢复其他模式的现场:

保存现场:

1.设置IRQ栈 2.保存LR 3.保存r0-r12

IRQ handle:

1. ldr sp, =IRQ_STACK

2.中断返回的PC保存在LR中,CPSR(自动)保存在(IRQ模式下)SPSR下。 sub lr,lr,#4

3.保存r0-r12,lr到irq模式下的栈上

stmfd sp!, {r0-r12,lr}

bl irq_handler

//处理完中断返回

ldmfd sp!, {r0-r12,pc}^ ^就是cpsr返回

第二个阶段irq_handler识别多个中断中的一个,然后调用中断处理流程

每个中断都有1个中断号,进入irq_handler后,先查阅中断源寄存器和子中断寄存器确定中断编号,然后用这个编号去中断isr数组中找到isr地址。

中断寄存器:可以读,但是写只能写中断enable,不能写中断disable

intselect irq还时fiq

irqstatus 只读 硬件自动设置该值表示中断发生了

priority0-priority31 中断嵌套,对实时性要求高的需要,比如单片机中比较重要,210中不重要

vecaddr0-vecaddr31 硬件自动识别中断号,找到地址,只读 避免软件查找中断源和isr

外部中断源(GPIO)

EIN0-EIN31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值