韦东山Linux嵌入式课程社区
登录
直播中
闫玮婧
8年用户
162经验值
私信
关注
为什么中断的过程中系统会自动返回?
开启该帖子的消息推送
韦东山
中断
代码
ISR
第一期视频,中断控制器 一节讲了中断的原理,基本了解但是又不会自己写代码
针对实例代码,有一处疑问:
在HandIRQ中断处理程序中
HandleIRQ:
sub lr, lr, #4 @ 计算返回地址
stmdb sp!, { r0-r12,lr } @ 保存使用到的寄存器
@ 注意,此时的sp是中断模式的sp
@ 初始值是上面设置的3072
ldr lr, =int_return @ 设置调用ISR即EINT_Handle函数后的返回地址
ldr pc, =EINT_Handle @ 调用中断服务函数,在interrupt.c中
int_return:
ldmia sp!, { r0-r12,pc }^ @ 中断返回, ^表示将spsr的值复制到cpsr
复制代码
ISR返回地址需要ldr lr,=int_return 来实现.
为什么这样一设置,处理完interrupt.c里的EINT_Handle函数,系统就会自动返回.
回帖
(3)
高欢
2019-8-21 09:37:36
lr表示返回地址的寄存器
lr表示返回地址的寄存器
举报
高川
2019-8-21 09:55:51
先谢谢楼上的回答.
我还有一点疑问:
主程序在调用ISR中断服务程序之前,先设置好中断返回地址(通过指令sub lr, lr, #4),这个我能理解,但是为何ISR也需要返回地址呢?
问题可能比较低级,请多多见谅
先谢谢楼上的回答.
我还有一点疑问:
主程序在调用ISR中断服务程序之前,先设置好中断返回地址(通过指令sub lr, lr, #4),这个我能理解,但是为何ISR也需要返回地址呢?
问题可能比较低级,请多多见谅
举报
俞旸
2019-8-21 10:10:08
sub lr, lr, #4 这里才是真正的返回地址
到后面只是恢复 地址而已
为什么是这条指令 sub lr, lr, #4
我也表示不理解
sub lr, lr, #4 这里才是真正的返回地址
到后面只是恢复 地址而已
为什么是这条指令 sub lr, lr, #4
我也表示不理解
举报
更多回帖
rotate(-90deg);
回复
相关问答
韦东山
中断
代码
ISR
如何解决linux在读写SD卡
过程中
拔出SD卡
系统
会
重启的问题?
2019-06-05
3789
NI OPC SERVICE 2016 运行
过程中
自动
关闭,请问如何解决?
2021-10-26
2395
protues
系统
自动
区分多个相同原件的问题
2013-04-01
2268
处理器在读内存的
过程中
,CPU核、cache、MMU如何协同工作?
2021-10-18
2489
STC15单片机的
中断
问题
2018-02-22
8881
proteus7.8绘制电路图
过程中
出现的问题
2012-10-29
3329
JLINK在下载程序的
过程中
怎么实现插入目标板
自动
下载?
2023-10-11
360
单片机
中断
的处理
过程
是怎样进行的?
2021-09-23
3738
在数据发送/接收
过程中
I2C会被FDCAN
中断
吗?
2022-12-09
479
请问时钟
中断
函数void SysTick_Handler(void)在调用
过程中
不会改变r4-r11吗?
2019-08-19
2175
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分