__inline void IRQEnable(void)
{
int tmp;
__asm
{
MRS tmp,CPSR ///读取CPSR的值
BIC tmp,tmp,#0x80 //将IRQ中断禁止位I清零,即允许IRQ中断
MSR CPSR_c,tmp //设置CPSR的值
}
}
__inline void IRQDisable(void)
{
int tmp;
__asm
{
MRS tmp,CPSR ///读取CPSR的值
ORR tmp,tmp,#0x80 //将IRQ中断禁止位I清零,即允许IRQ中断
MSR CPSR_c,tmp //设置CPSR的值
}
}
ARM7 C语言嵌入汇编开关中断
__inline void IRQEnable(void)
{
int tmp;
__asm
{
MRS tmp,CPSR ///读取CPSR的值
BIC tmp,tmp,#0x80 //将IRQ中断禁止位I清零,即允许IRQ中断
MSR CPSR_c,tmp //设置CPSR的值
}
}
__inline void IRQDisable(void)
{
int tmp;
__asm
{
MRS tmp,CPSR ///读取CPSR的值
ORR tmp,tmp,#0x80 //将IRQ中断禁止位I清零,即允许IRQ中断
MSR CPSR_c,tmp //设置CPSR的值
}
}

这段代码展示了在ARM7处理器上如何使用C语言嵌入汇编来启用和禁用IRQ中断。`IRQEnable`函数通过清除CPSR中的I位来开启中断,而`IRQDisable`函数则通过置位I位来关闭中断。
最低0.47元/天 解锁文章
431

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



