代码之家  ›  专栏  ›  技术社区  ›  Warren P

调试Cortex M3(ARM)Embedded-如何判断xPSR.ISR运行的是什么ISR?

  •  2
  • Warren P  · 技术社区  · 15 年前

    调试器显示CPU寄存器,包括一个名为“xPSR”的寄存器,其中包含一个名为“ISR”的子字段。CPU寄存器中的模式是'mode=Handler',这意味着m3 CPU处于中断处理程序而不是'thread'模式。我知道这么多。

    然而,我对Cortex M3芯片还很陌生,而且我对ARM7TDMI的了解也因为没有使用它而变得太少,以至于我记不起来了。我在我的文件里找不到这个。

    有人能告诉我怎么弄清楚吗?

    1 回复  |  直到 9 年前
        1
  •  3
  •   Michael Burr    15 年前

    异常数字15十进制是Cortex M3上的SYSTICK中断。

    这个 ARM Cortex M3 Technical Reference Manual 有一个表(表5-1-异常类型),其中列出了M3使用的各种中断号。

    Exception type    Position       Priority       Description
    --------------    ------------   --------       ------------------------------------
    Reset               1             –3 (highest)  Invoked on power up and warm reset. On first instruction, 
                                                    drops to lowest priority (Thread mode). This is asynchronous.
    Non-maskable Int    2             –2            Cannot be stopped or pre-empted by any exception but reset. 
                                                    This is asynchronous.
    Hard Fault          3             –1            All classes of Fault, when the fault cannot activate because of 
                                                    priority or the Configurable Fault handler has been disabled. 
                                                    This is synchronous.
    Memory Management   4             Configurable  Memory Protection Unit (MPU) mismatch, including access 
                                                    violation and no match. This is synchronous. This is used 
                                                    even if the MPU is disabled or not present, to support the 
                                                    Executable Never (XN) regions of the default memory map.
    Bus Fault           5             Configurable  Pre-fetch fault, memory access fault, and other 
                                                    address/memory related. This is synchronous when precise 
                                                    and asynchronous when imprecise.
    Usage Fault         6             Configurable  Usage fault, such as Undefined instruction executed or illegal 
                                                    state transition attempt. This is synchronous.
      -                 7-10            -           Reserved
    SVCall              11            Configurable  System service call with SVC instruction. This is 
                                                    synchronous.
    Debug Monitor       12            Configurable  Debug monitor, when not halting. This is synchronous, but 
                                                    only active when enabled. It does not activate if lower priority 
                                                    than the current activation.
      -                 13              -           Reserved
    PendSV              14            Configurable  Pendable request for system service. This is asynchronous 
                                                    and only pended by software.
    SysTick             15            Configurable  System tick timer has fired. This is asynchronous.
    
    External Interrupt  16 and above  Configurable  Asserted from outside the core, INTISR[239:0], and fed 
                                                    through the NVIC (prioritized). These are all asynchronous.