XOS中关中断、恢复中断的汇编实现:
1.系统函数输入输出中定义
;**
;* @brief EXPORT & IMPORT
;*
; 实现的系统函数
EXPORT OSIntDisable ; 备份中断状态并关中断
EXPORT OSIntRestore ; 恢复上次备份的中断状态
2.汇编代码段实现
;**
;* @brief 代码段
;*
AREA Routines, CODE
ENTRY
; 关中断并返回初始中断状态,中断屏蔽寄存器PRIMASK仅有一位宽度,置位后,不可屏蔽中断NMI和HardFault不被屏蔽外,屏蔽所有其他中断。
OSIntDisable
MRS R0, PRIMASK ;
CPSID I ; PRIMASK=1
BX LR
; 恢复中断状态
OSIntRestore
MSR PRIMASK, R0
BX LR
3.汇编指令参考以下两个链接:
https://blog.youkuaiyun.com/weibo1230123/article/details/84036225
ARM汇编:MRS和MSR指令
ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。
一:下面先来说说状态寄存器
针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器。每个位的含义如下图:

分成了4部分:
1,条件标志位
N(Negative), Z(Zero), C(Carry), V(Verflow)统称为条件标志位。ARM指令可以根据CPSR中的这些条件标志位来选择性的执行。
2,Q

这篇博客详细介绍了XOS中关于中断管理的汇编实现,包括OSIntDisable和OSIntRestore两个系统函数的定义和实现,以及MRS和MSR指令的使用。内容涉及到中断状态的备份与恢复,以及ARM处理器中状态寄存器的控制位操作,如PRIMASK的设置。同时,还提到了中断使能、挂起、清除挂起的C和汇编代码示例,以及中断优先级的配置。此外,还讨论了Cortex-M0的中断等待、系统异常控制寄存器和系统控制寄存器的相关内容。
最低0.47元/天 解锁文章
583

被折叠的 条评论
为什么被折叠?



