• STM32中断名词


    1、NVIC的优先级概念 
       占先式优先级 (pre-emption priority): 
       高占先式优先级的中断事件会打断当前的主程序/中断程序运行— —抢断式优先响应,俗称中断嵌套。 
       副优先级(subpriority): 
       在占先式优先级相同的情况下,高副优先级的中断优先被响应; 
       在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才 能得到响应——非抢断式响应(不能嵌套)。 
    2、判断中断是否会被响应的依据 
        首先是占先式优先级,其次是副优先级; 
        占先式优先级决定是否会有中断嵌套; 
        Reset、NMI、Hard Fault 优先级为负(高于普通中断优先级)且不可调整。 
    3、STM32中用到的Cortex-M3寄存器说明 
       在STM32中用到了Cortex-M3定义的三组寄存器,有关这三组寄存器的说明不在STM32的技术手册中,需要参考ARM公司发布的Cortex-M3 Technical Reference Manual (r2p0)。 
       在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: 
       1)、NVIC寄存器组 
           STM32的固件库中有如下定义: 
           typedef struct 
           { 
             vu32 ISER[2]; 
             u32 RESERVED0[30]; 
             vu32 ICER[2]; 
             u32 RSERVED1[30]; 
             vu32 ISPR[2]; 
             u32 RESERVED2[30]; 
             vu32 ICPR[2]; 
             u32 RESERVED3[30]; 
             vu32 IABR[2]; 
             u32 RESERVED4[62]; 
             vu32 IPR[11]; 
           } NVIC_TypeDef; 
           它们对应ARM手册中的名称为 
           ISER = Interrupt Set-Enable Registers 
           ICER = Interrupt Clear-Enable Registers 
           ISPR = Interrupt Set-Pending Register 
           ICPR = Interrupt Clear-Pending Register 
           IABR = Active Bit Register 
           IPR = Interrupt Priority Registers 
           每个寄存器有240位,以Interrupt Set-Enable Registers说明,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有ISER[2:7]。 
           参考STM32技术参考手册中的中断向量表,中断源的位置为: 
           位置0 - WWDG = Window Watchdog interrupt 
           位置1 - PVD = PVD through EXTI Line detection interrupt 
           位置2 - TAMPER = Tamper interrupt 
           ...... 
           位置58 - DMA2_Channel3 = DMA2 Channel3 global interrupt 
           位置59 - DMA2_Channel4_5 = DMA2 Channel4 and DMA2 Channel5 global interrupts 
       2)、系统控制寄存器组 
           STM32的固件库中有如下定义: 
           typedef struct 
           { 
             vuc32 CPUID; 
             vu32 ICSR; 
             vu32 VTOR; 
             vu32 AIRCR; 
             vu32 SCR; 
             vu32 CCR; 
             vu32 SHPR[3]; 
             vu32 SHCSR; 
             vu32 CFSR; 
             vu32 HFSR; 
             vu32 DFSR; 
             vu32 MMFAR; 
             vu32 BFAR; 
             vu32 AFSR; 
           } SCB_TypeDef; /* System Control Block Structure */ 
           它们对应ARM手册中的名称为 
           CPUID = CPUID Base Register 
           ICSR = Interrupt Control State Register 
           VTOR = Vector Table Offset Register 
           AIRCR = Application Interrupt/Reset Control Register 
           SCR = System Control Register 
           CCR = Configuration Control Register 
           SHPR = System Handlers Priority Register 
           SHCSR = System Handler Control and State Register 
           CFSR = Configurable Fault Status Registers 
           HFSR = Hard Fault Status Register 
           DFSR = Debug Fault Status Register 
           MMFAR = Mem Manage Address Register 
           BFAR = Bus Fault Address Register 
           AFSR = Auxiliary Fault Status Register 
       3)、系统时钟寄存器组 
           STM32的固件库中有如下定义: 
           typedef struct 
           { 
             vu32 CTRL; 
             vu32 LOAD; 
             vu32 VAL; 
             vuc32 CALIB; 
           } SysTick_TypeDef; 
           它们对应ARM手册中的名称为 
           CTRL = SysTick Control and Status Register 
           LOAD = SysTick Reload Value Register 
           VAL = SysTick Current Value Register 
           CALIB = SysTick Calibration Value Register

  • 相关阅读:
    6、深入理解计算机系统笔记:存储器层次结构,存储技术(1)
    流程图【占无内容】
    程序的三种基本控制架构【只有提纲】
    Console算法[for]穷举法:百钱买百鸡
    Logic算法(狼羊白菜)
    Console算法continue与break的区别?
    Console算法[for]简单画图
    Console算法[for]输出等腰三角形
    Console算法[for]国王与老人的六十四格
    Console算法[for]素数
  • 原文地址:https://www.cnblogs.com/zzdbullet/p/9489525.html
Copyright © 2020-2023  润新知