米尔科技提醒您:您的浏览器版本过低或者使用了兼容模式,为了获得更好的浏览体验,建议使用IE10以上的浏览器或使用极速模式。 请升级浏览器以获得更好的体验!

MDK中不能存取SPSR寄存器

问题类别: > 浏览次数:4593
发布日期: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);