MDK中不能存取SPSR寄存器
问题类别:ARM软件工具 > Keil MDK | 浏览次数:7118 |
发布日期:2012/4/23 17:30:06 | 文章来源:完美体育·(中国)手机网页版科技 |
回复日期:2020/12/20 9:54:27 |
环境说明
MDK 3.05 及以上分析描述
在ADS下的工程中 如中断中访问SPSR例如: __asm { MRS R0,SPSR ORR R0,R0,#0x80 // disable interrupt MSR SPSR_c,R0 } 则会提示如下错误:error C197: inline-asm: Syntax error *** MRS R0, SPSR error C197: inline-asm: undefined identifier *** MRS R0, SPSR问题解答
问题分析:编译器文档中给出的解释如下:
The ARM compiler provides new intrinsics to control interrupt handling:
— __enable_irq() and __disable_irq()
— __enable_fiq() and __disable_fiq().
These intrinsics can only be executed in privileged modes, that is, in non-user modes.
In User mode these instructions do not change the interrupt flags in the CPSR.
问题解答:
使用如下的函数进行操作:
void __disable_irq(void);
void __enable_irq(void);
void __disable_fiq(void);
void __enable_fiq(void);