STM32中断系统
1.中断介绍:
1.1 中断概念 CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂 时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序 或中断处理程
序),以处理该事件,该事件处理完后又返回被中断的程序 继续执行,这一过程称为中断。引发中断的称为中断源。比如:看电视 时突然门铃响,那么门铃响就相当于中
断源。有些中断还能够被其他高 优先级的中断所中断,那么这种情况又叫做中断的嵌套。

STM32F10x芯片有84个中断通道,包括 16 个内核中断和 68 个可屏蔽中 断,这些中断通道已按照不同优先级顺序固定分配给相应的外部设备。 (参考《STM32F10x中文参考手册》-9 中断和事件章节)

1.2 NVIC介绍
NVIC英文全称是Nested Vectored Interrupt Controller,中文意思 就是嵌套向量中断控制器,它属于M3内核的一个外设,控制着芯片的中 断相关功能。由于ARM给NVIC预
留了非常多的功能,但对于使用M3内核设 计芯片的公司可能就不需要这么多功能,于是就需要在NVIC上裁剪。ST 公司的STM32F103芯片内部中断数量就是NVIC裁剪后
的结果。 中断控制相关寄存器在固件库core_cm3.h文件NVIC结构体内。可打开 任意库函数工程即可查看到。
1.3 中断优先级
STM32F103芯片支持60个可屏蔽中断通道,每个中断通道 都具备自己的中断优先级控制字节(8位,但是STM32F103中只使用4位 ,高4位有效),用于表达优先级的高4位
又被为组成抢占式优先级和响应 优先级,通常也把响应优先级称为“亚优先级”或“副优先级”,每个 中断源都需要被指定这两种优先级。 高抢占式优先级的中断事件会打断当
前的主程序或者中断程序运行, 俗称中断嵌套。在抢占式优先级相同的情况下,高响应优先级的中断优 先被响应。 当两个中断源的抢占式优先级相同时,这两个中断将没
有嵌套关系, 当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要 等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则 中断控制器根
据他们的响应优先级高低来决定先处理哪一个;如果他们 的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺 序决定先处理那一个。
STM32F103中指定中断优先级的寄存器位有4位,这4位的分组方式 如下:

设置优先级分组可调用库函数 NVIC_PriorityGroupConfig(),在 misc.c可以查看
2.中断配置步骤
要使用中断我们就需要先配置它,通常都需经过这几步:
(1)使能外设某个中断
(2)设置中断优先级分组,初始化 NVIC_InitTypeDef 结构体
typedef struct {
uint8_t NVIC_IRQChannel; //中断源
uint8_t NVIC_IRQChannelPreemptionPriority; //抢占优先级
uint8_t NVIC_IRQChannelSubPriority; //响应优先级
FunctionalState NVIC_IRQChannelCmd; //中断使能或失能
} NVIC_InitTypeDef;
(3)编写中断服务函数
可以根据启动文件进行查看相应的中断服务函数的函数名。
STM32中断系统的更多相关文章
- (stm32f103学习总结)—stm32中断系统
一.NVIC 介绍 NVIC 英文全称是 Nested Vectored Interrupt Controller,中文意思就是嵌套向量中断控制器,它属于 M3 内核的一个外设,控制着芯片的中断相关功 ...
- STM32时钟系统之利用 systick 定时器来实现准确的延时。
本篇文章带着大家来认识一下 STM32 的时钟系统,以及利用 systick 定时器来实现一个比较准确的延时. 我们首先从时钟说起,时钟在MCU中的作用,就好比于人类的心脏一样不可或缺.STM32 的 ...
- STM32中断编程三步曲教你弄会中断设置以及中断优先级设置
中断作为stm32中必不可少的一个功能,其重要性是不言而喻的因此把中断学习好是根本. 所以今天就来好好啃一下中断配置的知识,俗话说:磨刀不误砍柴工.问题是什么呢?项目中我用到了一个触摸键盘TTP229 ...
- STM32的中断系统
STM32的中断系统 STM32具有十分强大的中断系统,将中断分为了两个类型:内核异常和外部中断.并将所有中断通过一个表编排起来,下面是stm32中断向量表的部分内容: 上图-3到6这个区域被标黑了, ...
- STM32中断管理函数
CM3 内核支持256 个中断,其中包含了16 个内核中断和240 个外部中断,并且具有256 级的可编程中断设置.但STM32 并没有使用CM3 内核的全部东西,而是只用了它的一部分. STM32 ...
- 【转载】stm32中断学习
中断对于开发嵌入式系统来讲的地位绝对是毋庸置疑的,在C51单片机时代,一共只有5个中断,其中2个外部中断,2个定时/计数器中断和一个串口中断,但是在STM32中,中断数量大大增加,而且中断的设置也更加 ...
- 第16章 STM32中断应用概览
第16章 STM32中断应用概览 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...
- STM32 中断应用概览
本章参考资料< STM32F4xx 中文参考手册>第十章-中断和事件.<ARM Cortex™-M4F 技术参考手册> -4.3 章节: NVIC 和 4.4 章节: SCB— ...
- 第16章 STM32中断应用概览—零死角玩转STM32-F429系列
第16章 STM32中断应用概览 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...
随机推荐
- PCIE DMA实现
基于Spartan-6, Virtex-5/Virtex-6/Virtex-7/7 Series FPGA PCI Express Block Endpoint模块设计PCI Express Endp ...
- C语言函数名以及取地址的区别和联系
有时看到如下的代码: /*****************************/ #include <stdio.h> #include <string.h> #inclu ...
- idea配置maven以及手动添加webapp目录
idea配置maven 点击右下角Configure 点击settings 3 . 设置路径 设置自动导包 4 . 点击创建新工程 5 . 选择maven点击下一步 6 . 7 . 8 . 此时,创建 ...
- Maven项目下使用log4j
Apache Log4j是一个基于Java的日志记录工具,它的日志级别按下面顺序递减: 级别 描述 OFF 最高级别,用于关闭日志记录. FATAL 将导致应用程序提前终止的严重错误的信息将立即呈现在 ...
- Java学习笔记之基础语法(数据类型)
8种基本数据类型 整型: byte[1字节] short[2字节] int[4字节] long[8字节] 1,四种整型之间的区别:申 ...
- Python3字符串常见方法
目录 字符串的进阶使用 格式化输出字符串 当然除了上述方法外,还可以你使用format方法 format方法第二种用法: Python字符串与二进制的转换 字母大写 计字符a出现的次数 输出50个字符 ...
- Vue 实现点击空白处隐藏某节点(三种方式:指令、普通、遮罩)
在项目中往往会有这样的需求: 弹出框(或Popover)在 show 后,点击空白处可以将其 hide. 针对此需求,整理了三种实现方式,大家按实际情况选择. 当然,我们做项目肯定会用到 UI 框架, ...
- freertos学习
freertos的基本框架如下 注意有三点很重要: 1.任务的资源 (1)任务优先级:freertos 能够调度的任务优先级在freertosConfig.h中的configMAX_PRIORITIE ...
- linux+jenkins+github+python持续集成
1.服务器上事先安装jenkins 参见:linux上war包方式安装Jenkins 2.新建一个自由风格的job,名字随意起 3.配置git(拉取github代码) 从github复制pytho ...
- EFK教程 - EFK快速入门指南
通过部署elasticsearch(三节点)+filebeat+kibana快速入门EFK,并搭建起可用的demo环境测试效果 作者:"发颠的小狼",欢迎转载与投稿 目录 ▪ 用途 ...