STM32f103xxxxz中断理解笔记

发布者:点亮未来最新更新时间:2018-12-10 来源: eefocus关键字:STM32f103xxxxz  中断理解 手机看文章 扫描二维码
随时随地手机看文章

中断:在程序执行过程中产生了一个必须执行的外部因素时,程序就去执行外部因素对应的中断服务函数,完了再回到正常程序,这就是简单的理解中断。


但是当程序在处理中断服务函数时又产生另一个中断时就需要一个机制来调解:NVIC.


NVIC 即嵌套向量中断控制器(Nested Vectored Interrupt Controller)。在stm32f103中总共有70个中断源,包括10个内核中断和60个可屏蔽中断,具有16级的可编程的中断优先级,我们通常使用这60个可屏蔽中断,在配置中断的时候我们一般只用 ISER、ICER 和 IP 这三个寄存器,ISER 用来使能中断,ICER 用来失能中断,IP 用来设置中断优先级。


 一、使能。对于ISER中断使能寄存器组中,ISER[0]的 bit0~bit31 分别对应中断 0~31。ISER[1]的 bit0~27对应中断 32~59,所以ISER寄存器的其他寄存器组就没有实际作用,在使能中断的时候对应的bit需要设置为1.在ICER中断失能寄存器组中,对相应的中断位写1达到失能中断的作用。


ISPR[8]:是一个中断挂起控制寄存器组。通过置 1,可以将正在进行的中断挂起,而执行同级或更高级别的中断


ICPR[8]:是一个中断解挂控制寄存器组。通过设置 1,可以将挂起的中断接挂。写 0 无效。


IABR[8]:是一个中断激活标志位寄存器组。通过设置 1,则表示该位所对应的中断正在被执行。这是一个只读寄存器,通过它可以知道当前在执行的中断是哪一个。在中断执行完了由硬件自动清零。


IP[240]:是一个中断优先级控制的寄存器组。STM32 的中断分组与这个寄存器组密切相关。IP寄存器组由 240 个 8bit 的寄存器组成,每个可屏蔽中断占用 8bit,这样总共可以表示 240 个可屏蔽中断。而 STM32 只用到了其中的前 60 个。IP[59]~IP[0]分别对应中断 59~0。而每个可屏蔽中断占用的 8bit 并没有全部使用,而是只用了高4 位。这 4 位,又分为抢占优先级和子优先级。抢占优先级在前,子优先级在后。


二、分组。STM32有抢占优先级和响应优先级。低优先级的中断在执行时遇到高优先级的中断可以被响应,即执行完高优先级的中断后再执行低优先级中断。同级优先级不同时遇到时得按顺序执行,若同时遇到则要比较其子优先级的高低决定执行顺序。优先级分组有0-4组,抢占优先级和响应优先级都有0-4的选择,且数字越小优先级越高


三、NVIC在HAL库中相关函数。


HAL_NVIC_SetPriorityGrouping  函数:设置中断优先级分组,该函数有一个形参对应5个结果。


HAL_NVIC_SetPriority函数:设置中断优先级,函数有三个形参,作用分别是选择中断源,抢占优先级,响应优先级


HAL_NVIC_EnableIRQ函数:使能中断,函数有一个形参,选定中断源。


HAL_NVIC_DisableIRQ函数:失能中断,参数作用同上。


HAL_NVIC_SystemReset函数:系统复位。


配置中断的步骤:


1、设置优先级分组。


2、设置中断并使能。


3、编写中断服务函数。


4、启动接收中断。


EXTI--外部中断/事件控制器


STM32F103ZET6有7个GPIO外设,每个外设对应0-15共16个GPIO引脚,对应16条外部中断线。每个输入线可以独立配置输入类型(脉冲或挂起)和对应的触发事件(上升沿,下降沿,双边沿)。注:同一条线不能被多组GPIO外设同时使用,互联性产品必须先使能AFIO时钟。


EXIT线16连接到PVD输出。


EXTI线17连接到RTC警告事件。


EXTI线18连接到USB唤醒事件。


前面三条线属于事件请求,使用外部中断需要开启AFIO中对应的中断功能。


总共19条外部中断线。


EXTI在功能上可分为产生中断及产生事件。


在成功触发外部中断时,HAL库中会执行外部中断回调函数HAL_GPIO_EXTI_Callback。而一般操作外设则放在回调函数中。


此上均为参考资料后做的一点笔记,若有冒犯愿作者告知。



关键字:STM32f103xxxxz  中断理解 引用地址:STM32f103xxxxz中断理解笔记

上一篇:STM32中断和异常
下一篇:stm32学习笔记(八)中断服务函数与函数调用的区别

推荐阅读最新更新时间:2024-03-16 16:19

STM32 (CortexM3) 中NVIC(嵌套向量中断控制)的理解
一、STM32 (Cortex-M3) 中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作 亚优先级 或 副优先级 ,每个中断源都需要被指定这两种优先级。 1. 何为占先式优先级(pre-emption priority) 高占先式优先级的中断事件会打断当前的主程序/中断程序运行 抢断式优先响应,俗称中断嵌套。 2. 何为副优先级(subpriority) 在占先式优先级相同的情况下,高副优先级的中断优先被响应; 在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才能得到
[单片机]
STM32 (CortexM3) 中NVIC(嵌套向量<font color='red'>中断</font>控制)的<font color='red'>理解</font>
中断理解
51单片机中断源有5个,分别是外部中断0,外部中断1,定时器0,定时器1,串行口中断。 不管是大学里上课的书本,还是参考书也好,在单片机的书里面都是写了一系列密密麻麻的知识点,最后就敲个代码,然后很多初学者从头学到尾,好像知道怎么写,但是又不会写。进来看这篇文章的同伴们,不管您会也好,不会也罢,小编把我当时怎么学中断的经验分享给大家,好让更多的同伴们早日脱离书本,开启自写编程时代!!! 好了,我们进入正题,到底什么是中断??中断这个过程我们程序员需要去做什么??我们带着这两个问题来查找我们当时为什么不会中断的原因。首先: 1、你想使用的中断是哪个?选择相应的序号; 2、你所希望触发的条件是什么? 3、你希望在中断之后干
[单片机]
STM32 中嵌套向量中断控制的理解
一、STM32 (Cortex-M3) 中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级。 1. 何为占先式优先级(pre-emption priority) 高占先式优先级的中断事件会打断当前的主程序/中断程序运行—抢断式优先响应,俗称中断嵌套。 2. 何为副优先级(subpriority) 在占先式优先级相同的情况下,高副优先级的中断优先被响应; 在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才能得到
[单片机]
STM32 中嵌套向量<font color='red'>中断</font>控制的<font color='red'>理解</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved