ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

STM32F103的中断系统

2020-02-03 13:41:13  阅读:708  来源: 互联网

标签:STM32F103 优先级 中断 系统 STM32 屏蔽 寄存器 Interrupt


一. 简介

CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。但 STM32 并没有使用 CM3 内核的全部东西,而是只用了它的一部分。STM32 有 84 个中断,包括 16 个内核中断和 68 个可屏蔽中断,具有 16 级可编程的中断优先级。而我们常用的就是这 68 个可屏蔽中断, 但是 STM32 的 68 个可屏蔽中断,在STM32F103 系列上面,又只有 60 个(在 107 系列才有 68 个)。 因为我的项目上选择的芯片是 STM32F103 系列的所以我们就只针对 STM32F103 系列这 60 个可屏蔽中断进行介绍。

这60个可屏蔽中断在datasheet 里如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、NVIC 中断优先级管理

NVIC:嵌套向量中断控制器
ISER[8]: ISER 全称是: Interrupt Set-Enable Registers,这是一个中断使能寄存器组。

ICER[8]:全称是: Interrupt Clear-Enable Registers,是一个中断除能寄存器组。该寄存器组与 ISER 的作用恰好相反,是用来清除某个中断的使能的。

ISPR[8]:全称是: Interrupt Set-Pending Registers,是一个中断挂起控制寄存器组。

ICPR[8]:全称是: Interrupt Clear-Pending Registers,是一个中断解挂控制寄存器组。

IABR[8]:全称是: Interrupt Active Bit Registers,是一个中断激活标志位寄存器组。 这是一个只读寄存器,通过它可以知道当前在执行的中断是哪一个。在中断执行完了由硬件自动清零。

最重要的寄存器:IP
IP[240]:全称是: Interrupt Priority Registers,是一个中断优先级控制的寄存器组。这个寄存器组相当重要!STM32 的中断分组与这个寄存器组密切相关。 IP 寄存器组由 240 个 8bit 的寄存器组成,每个可屏蔽中断占用 8bit,这样总共可以表示 240 个可屏蔽中断。 而 STM32 只用到了其中的前 60 个。 IP[59]-IP[0]分别对应中断 59-0。 而每个可屏蔽中断占用的 8bit 并没有全部使用,而是 只用了高 4 位。这 4 位,又分为抢占优先级和子优先级。抢占优先级在前,子优先级在后。而这两个优先级各占几个位又要根据 SCB->AIRCR 中的中断分组设置来决定

在这里插入图片描述*[注释]:
抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高。
1、如果两个中断的抢占优先级和响应优先级都是一样的话,则中断先发生就先执行;
2、高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。

嵌入式_STM32菜鸟 发布了1 篇原创文章 · 获赞 0 · 访问量 54 私信 关注

标签:STM32F103,优先级,中断,系统,STM32,屏蔽,寄存器,Interrupt
来源: https://blog.csdn.net/weixin_46257862/article/details/104154156

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有