文章来源:https://www.toymoban.com/news/detail-664407.html
软中断代码:(keil软件)文章来源地址https://www.toymoban.com/news/detail-664407.html
.text
.global _start
_start:
@1.构建异常向量表
b reset
b undef_interrupt
b software_interrupt
b prefetch_dataabort
b data_abort
b .
b irq
b fiq
reset:
@2.系统一上电,程序运行在SVC模式
@1>>初始化SVC模式,栈指针
ldr sp,=0x40000800
@3.从SVC模式切换到user模式
msr cpsr,#0xD0
@4.user模式 下代码
@1>>初始化user模式,栈指针
ldr sp,=0x40000700
mov r0,#0x1
mov r1,#0x2
@5.执行软中断指令--->保存现场(四大部三小步)
swi 2
add r0,r0,r1 @ r0=0x3
b stop
undef_interrupt:
software_interrupt:
@1.压栈保存现场
stmfd sp!,{r0-r12,lr}
mov r0,#0x3
mov r1,#0x4
add r0,r0,r1 @ r0=0x7
@2.出栈恢复现场
ldmfd sp!,{r0-r12,pc}^
@ ^:将SPSR_<MODE>寄存器中的值,给到CPSR寄存器中
prefetch_dataabort:
data_abort:
irq:
fiq:
stop:
b stop
.end
到了这里,关于ARM--day7(cortex_M4核LED实验流程、异常源、异常处理模式、异常向量表、异常处理流程、软中断编程、cortex_A7核中断实验)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!