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

STM32中断名词的更多相关文章

  1. STM32中断管理函数

    CM3 内核支持256 个中断,其中包含了16 个内核中断和240 个外部中断,并且具有256 级的可编程中断设置.但STM32 并没有使用CM3 内核的全部东西,而是只用了它的一部分. STM32 ...

  2. 第16章 STM32中断应用概览

    第16章     STM32中断应用概览 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...

  3. STM32 中断应用概览

    本章参考资料< STM32F4xx 中文参考手册>第十章-中断和事件.<ARM Cortex™-M4F 技术参考手册> -4.3 章节: NVIC 和 4.4 章节: SCB— ...

  4. 第16章 STM32中断应用概览—零死角玩转STM32-F429系列

    第16章     STM32中断应用概览 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...

  5. STM32中断应用总结

    STM32中断很强大,STM32中断可以嵌套,任何外设都可以产生中断,其中中断和异常是等价的. 中断执行流程: 主程序执行过程可以产生中断去执行中断的内容(保护现场),然后在返回继续执行中断. 中断分 ...

  6. 【转载-Andrew_qian】stm32中断学习

    [转载]stm32中断学习 中断对于开发嵌入式系统来讲的地位绝对是毋庸置疑的,在C51单片机时代,一共只有5个中断,其中2个外部中断,2个定时/计数器中断和一个串口中断,但是在STM32中,中断数量大 ...

  7. STM32中断编程三步曲教你弄会中断设置以及中断优先级设置

    中断作为stm32中必不可少的一个功能,其重要性是不言而喻的因此把中断学习好是根本. 所以今天就来好好啃一下中断配置的知识,俗话说:磨刀不误砍柴工.问题是什么呢?项目中我用到了一个触摸键盘TTP229 ...

  8. stm32 中断几个库函数实现过程分析

    感谢原文作者:鱼竿的传说,这篇文章写得不错,转载自 http://www.cnblogs.com/chineseboy/archive/2013/03/14/2956782.html 前题: 闭门造车 ...

  9. stm32中断无电平触发的解决办法

    这几天在用stm32读取FPGA中FIFO里的数据,遇到了不少的问题.其中有个自己觉得比较好玩的问题,就拿出来写写.其实这个问题也比较简单,开始我觉得没必要拿出来写,不过,想想后觉得还是写写吧,就当做 ...

随机推荐

  1. [ Docker ] 映射資料夾

    - docker run -v <host path>:<container path> - 例如:docker run -v /home/adrian/data:/data ...

  2. Webpack的作用(一个基础的打包编译工具在做什么?)

    结论: 转换ES6语法成ES5 处理模块加载依赖 生成一个可以在浏览器加载执行的 js 文件 第一个问题,转换语法,其实我们可以通过babel来做.核心步骤也就是: 通过babylon生成AST 通过 ...

  3. UI控件设置

    去掉cesium默认的版权信息: 在style样式中添加 .cesium-widget-credits {display:none !important} 去掉动画控件.地址搜索控件.图层选择控件.操 ...

  4. [POJ2823][洛谷P1886]滑动窗口 Sliding Window

    题目大意:有一列数,和一个窗口,一次能框连续的s个数,初始时窗口在左端,不断往右移动,移到最右端为止,求每次被框住的s个数中的最小数和最大数. 解题思路:这道题是一道区间查询问题,可以用线段树做.每个 ...

  5. CF1019C Sergey's problem (图上构造)

    题目大意:给你一个有向连通图,让你找出一个点集,保证点集内的点之间没有直接连边,且集合中存在一点,到一个 非点集中的点的距离小于等于2 思路很清奇 首先编号从小到大遍历每个点,如果这个点没有被访问过, ...

  6. c traps and pitfalls reading note(1)

    1. 一直知道char *p = 'a';这样写是错误的,但是为什么是错的,没想过,今天看书解惑. p指向一个字符,但是在c中,''引起来的一个字符代表一个整数,这样指针能不报错.o(^▽^)o 2. ...

  7. 【codeforces 65A】Harry Potter and Three Spells

    [题目链接]:http://codeforces.com/problemset/problem/65/A [题意] 你有3种魔法; 1.可以将a单位的石头变成b单位的铅 2.可以将c单位的铅变成d单位 ...

  8. XML快速注释

    eclipse中编辑java或C/C++,python文件时,注释的快捷键均为 "CTRL + / ",编辑xml文件时,该快捷键无效. eclipse XML 注释:CTRL + ...

  9. leetcode 刷题之路 66 Path Sum II

    Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...

  10. android自己定义圆盘时钟

    自己定义圆盘时钟的大概流程:由于圆盘时钟的圆盘是不须要动的,所以不必要加在自己定义的view里面,在view里面仅仅须要绘制秒针和分针时针并控其转动就可以. 下面就是自己定义view的主要代码: pa ...