嵌入式自学四十五天

异常向量表可以放在任意位置。

SP r13

LR r14

PC r15

bl:会在LR寄存器保存PC+4。

mov pc,lr        >>   bx lr

arm保护与恢复现场:利用stack栈指针sp满减

空增(Empty Increment)和空减(Empty Decrement)通常指在栈或队列操作中,指针先移动再执行读写操作。满增(Full Increment)和满减(Full Decrement)则是先执行读写操作,再移动指针

stmfd指令:保存多个寄存器用满减,不加!,入栈后sp不动,stmfd sp!,{r0 - r12,lr}

ldmfd:恢复多个寄存器

import导入.c函数。 export 导出.s函数

参数对应r0 到 r3,结果通过r0返回。当超过4个参数,通过栈传参stmfd sp!,{r4}

CPSR是ARM架构中的当前程序状态寄存器,用于存储处理器的状态和控制信息。其功能包括:

  • 条件标志位:N(Negative)、Z(Zero)、C(Carry)、V(Overflow),反映算术或逻辑操作的结果。
  • 控制位
    • T位(Thumb状态位):指示处理器处于Thumb(T=1)或ARM(T=0)指令模式。
    • I/F位(中断屏蔽位):控制IRQ和FIQ中断的启用(0)或禁用(1)。
    • M[4:0](模式位):定义当前处理器模式(如用户模式、IRQ模式等)。

典型模式编码

  • 用户模式(User):0b10000
  • FIQ模式(FIQ):0b10001
  • IRQ模式(IRQ):0b10010
  • 管理模式(Supervisor):0b10011

mrs:MRS指令用于将特殊寄存器(如CPSR或SPSR)的值读取到通用寄存器中,常用于状态检查或模式切换前的备份。

msr:MSR指令与MRS相反,用于将通用寄存器的值写入特殊寄存器(CPSR/SPSR),通常用于修改处理器状态。

  • _c:控制域(低8位,包含模式位和中断屏蔽位)。
  • _x:扩展域(位8-15)。
  • _f:标志域(高4位,条件标志位)。

开时钟

功能复用:规定引脚归谁使用。

检测引脚  

GPIOx_DR    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值