stm32之中断系统
概述:
提供中断控制器,用于总体管理异常,称之为“嵌套向量中断控制器:Nested Vectored Interrupt Controller (NVIC)
VIC:中断管理器;
NVIC:内嵌中断管理器,将中断嵌套进入内核;
带来的优势:1、响应速度提高;
2、标准化,统一管理;
stm32创新:所以IO口都可以中断;
stm32的中断向量表:一个中断源,对应的地址、优先级等信息;
具体参见stm32的文档:

NVIC中断优先级:
中断优先级高的中断可以抢占中断优先级低的中断,从而实现了中断嵌套;
STM32中有两个优先级的概念-------抢占式优先级(主优先级)和响应优先级(从优先级),每个中断源都需要被指定这两种优先级,具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理的中断过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断;
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到了时,如果cpu正在处理另一个中断,这个后到的中断就要等到前一个中断处理完之后才能被处理;(从优先级不能抢占关系)
如果这两个中断同时到达而从优先级不同时,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;
如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪个中断;
Cortex-m3允许具有较少中断源时,使用较少的寄存器位指定中断源的优先级,因此STM32把中断优先级的寄存器位由8位减少到4位,这4个寄存器位的分组方式如下:
第0组:所以4位用于指定响应优先级;
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级;
第2组:最高2位用于指定抢占式优先级,最低2位用于响应优先级;
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级;
第4组:所以4位用于指定抢占式优先级;
以上设置可以调用固件库函数中的NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式;
(NVIC_PriorityGroup_0, NVIC_PriorityGroup_1, NVIC_PriorityGroup_2, NVIC_PriorityGroup_3, NVIC_PriorityGroup_4)
typedef struct
{
u8 NVIC_IRQChannel; //中断通道号;
u8 NVIC_IRQChannelPreemptionPriority; //主优先级
u8 NVIC_IRQChannelSubPriority; //从优先级
FunctionalState NVIC_IRQChannelCmd; //是否使能
}NVIC_InitTypeDef;
外部中断:

另外三种其他的外部中断/事件控制器连接如下:
EXTI线16连接到PVD输出;
EXTI线17连接到RTC闹钟事件;
EXTI线18连接到USB唤醒事件;
外部中断配置:
外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。每个输入线可以独立地
配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每
个输入线都可以被独立的屏蔽。挂起寄存器保持着状态线的中断要求。
硬件中断选择:
通过下面的过程来配置19个线路做为中断源:
stm32之中断系统的更多相关文章
- STM32的中断系统
STM32的中断系统 STM32具有十分强大的中断系统,将中断分为了两个类型:内核异常和外部中断.并将所有中断通过一个表编排起来,下面是stm32中断向量表的部分内容: 上图-3到6这个区域被标黑了, ...
- STM32外部中断具体解释
一.基本概念 ARM Coetex-M3内核共支持256个中断,当中16个内部中断,240个外部中断和可编程的256级中断优先级的设置.STM32眼下支持的中断共84个(16个内部+68个外部), ...
- (二)stm32之中断配置
一.stm32的中断和异常 Cortex拥有强大的异常响应系统,它能够打断当前代码执行流程事件分为异常和中断,它们用一个表管理起来,编号为0~15为内核异常,16以上的为外部中断,这个表就是中断向量表 ...
- stm32之中断配置
一.stm32的中断和异常 Cortex拥有强大的异常响应系统,它能够打断当前代码执行流程事件分为异常和中断,它们用一个表管理起来,编号为0~15为内核异常,16以上的为外部中断,这个表就是中断向量表 ...
- 转载:STM32之中断与事件---中断与事件的区别
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚 ...
- 【原创】MIPS中断系统的板级验证及实例测试
“五一”假期前后这约五天时间,终于将MIPS中断系统进行了板级验证及实例测试.因为老师给的交叉编译工具不会用,所以测试代码完全用MIPS汇编编写.使用MARS而没有用QtSpim,其实我觉得SPIM这 ...
- 【原创】MIPS浅议之——中断系统之我见
最近,准确的说应该是最近两个月的时间,我都在研究MIPS的异常与中断.或者可以说,最近这两个月,我才真正了解中断系统的整个结构和处理流程以及为什么要这样做?这段时间我最大的体会就是以前我们在“计算机组 ...
- STM32F072B-DISCO 深入研究 中断系统
STM32F072B-DISCO 是我认为性价比最高的一款CPU的demo系统,以前一直在用PIC的CPU但最近几年ST异军突起,几次课题查找芯片无一例外都是ST,像USB,CAN,ZIGBEE等,S ...
- STM32之中断与事件---中断与事件的区别
STM32之中断与事件---中断与事件的区别 http://blog.csdn.net/flydream0/article/details/8208463 这张图是一条外部中断线或外部事件线的示意图 ...
随机推荐
- bootstrap table笔记
获取选中行:$table.bootstrapTable('getSelections');
- Java 网络编程(一) 网络基础知识
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951826.html 网络基础知识 网络编程的目的:直接或间接地通过网络协议与其他计算机 ...
- Windows配置Python编程环境
1.安装Python https://www.python.org/ 2.修改环境变量 将安装python的路径加到path路径 3.配置notepad++ a. notepad++/运行/“运行”按 ...
- 手动添加删除windows服务
1.使用sc命令创建服务 命令格式如: sc create [service name] [binPath= ] <option1> <option2>... 比如: sc c ...
- Android 开发笔记“Application 理解”
Android 中Application类用法 1. Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时 ...
- RII K25A 语音空中飞鼠 红外学习步骤
1.按住多功能遥控器上的SET按键,超过4秒不要放手,LED指示灯会闪一次,然后长亮.2.将多功能遥控器的红外口对准你原来的遥控器的红外口,然后按RII多功能遥控器面上任何按钮,上面灯将会闪动,闪动过 ...
- QT实现TCP通信服务器端和客户端(支持多个客户端)精简版
上星期接了个私活,工期两星期,报酬3000,写一个小软件,采集定向网络上的数据,并进行双向通信,捣鼓了两天,终于把QT中tcp通信这块调通了,找过N多例子,绝大部分都是基本的一个服务端一个客户端通信的 ...
- FormView分页显示数据的例子
%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FormView控件.aspx.cs ...
- ArcSde for Oracle服务注册
1.首先安装ArcSde,安装完成之后在dos命令窗口运行如下命令: sdeservice -o create -d oracle,instance -p sde -i port; 参数说明: ins ...
- Node.js入门-Node.js 介绍
Node.js 是什么 Node.js 不是一种独立的语言,与 PHP,Python 等"既是语言优势平台"不同,它也不是一个 JavaScrip 框架,不同于 CakePHP,D ...