STM32——关于NVIC讲解及标准库应用(基础篇)

这篇具有很好参考价值的文章主要介绍了STM32——关于NVIC讲解及标准库应用(基础篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介:

        NVIC是指STM32中的中断控制器(Nested Vectored Interrupt Controller)。中断是STM32中的重要机制,通过中断可以实现异步事件处理。NVIC提供了灵活、高效、可扩展的中断处理机制,支持多级优先级、多向中断、嵌套向量中断等特性,是STM32中的重要组件。

        当STM32在程序运行过程中触发中断条件时,STM32会暂停当前正在运行的程序,转头去处理中断程序,处理完后又会返回原先暂停的地方继续运行主程序。这样,STM32的中断就会产生以下中断处理流程:

        中断处理分为三个阶段:中断响应、中断处理、中断返回。

  • 中断响应:当中断事件发生时,STM32首先会对中断请求进行检测。如果检测到中断请求,CPU会暂停当前进程的执行,将控制权交给中断处理程序。
  • 中断处理:中断处理程序是一段特殊的代码,负责处理中断事件。中断处理程序必须尽可能快地执行完成,以便尽快恢复原来的执行状态。
  • 中断返回:当中断处理程序执行完成时,CPU会返回到原来的执行状态,继续执行之前中断事件发生时的程序。

NVIC的组成

NVIC由以下几个部分组成:

(1)中断优先级和控制器

NVIC支持多级优先级,可以配置不同的优先级和互斥优先级组。中断控制器负责中断的挂起、解挂和优先级管理。NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级。抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队。

nvic,单片机,stm32,嵌入式硬件

(2)向量表

向量表是一张中断服务程序的地址表,存储了每个中断源对应的中断处理程序的入口地址。

nvic,单片机,stm32,嵌入式硬件

nvic,单片机,stm32,嵌入式硬件

nvic,单片机,stm32,嵌入式硬件

nvic,单片机,stm32,嵌入式硬件

(3)系统控制寄存器

系统控制寄存器提供了对NVIC中断控制器的配置和控制。

(4)特殊功能寄存器

特殊功能寄存器是NVIC中断控制器对外暴露的寄存器,用于实现对中断处理的控制,包括中断使能、中断标志、中断状态等。


NVIC的应用

NVIC提供了丰富的接口和功能,包括以下几个方面的应用:

(1)中断优先级设置

NVIC支持标准中断优先级和子优先级,可以设置不同的优先级级别。用户可以根据不同的需求对中断优先级进行设置,以实现对中断的响应和处理。

(2)中断嵌套处理

NVIC支持多重中断,可以在一个中断处理程序中处理多个中断事件,提高中断响应效率。同时,中断嵌套处理还可以实现对不同优先级的中断事件的处理。

(3)CPU低功耗模式

当CPU处于低功耗模式时,NVIC提供了挂起和解挂中断的机制,可以根据不同需求设置相应的中断使能和关闭。

(4)中断标志复位

NVIC提供了中断标志复位功能,可以清除某个中断事件的标志位。这是在中断处理过后需要清除标志位的情况下尤为重要。

(5)DMA中断

NVIC支持DMA中断,在DMA传输过程中可以监控传输状态,及时响应传输完成事件。


总结

NVIC是STM32中的重要组件,提供了丰富的中断处理接口和功能,通过合理设置中断优先级、嵌套处理、低功耗模式等机制,可以实现高效、灵活的中断处理。理解和掌握NVIC的功能和使用方式,对于STM32开发者来说是非常重要的。文章来源地址https://www.toymoban.com/news/detail-589048.html

到了这里,关于STM32——关于NVIC讲解及标准库应用(基础篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】中断与NVIC以外部中断为例

    在stm32中姑且可以认为,异常就是中断 单片机上电之后,首先执行启动文件,开辟堆栈之后,开始初始化中断向量表。 NVIC NVIC是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是 内核 里面的一个外设。 ####三个寄存器 ISER 、 ICER 和 IP NVIC 结构体

    2024年02月10日
    浏览(23)
  • STM32 hal库 NVIC初始化函数梳理

    使用的是stm32f407vg,代码来源stm32cubemx。 已经配置了中断的是GPIOD_pin6和TIM2。  这个是STM32CubeMX里面NVIC的控制面板;其中最上面priority grope是优先级组,我设置的是4位抢占优先级,0位响应优先级,就和以前刚学中断时中断嵌套那样。 下面是有哪些中断源,勾上之后,在最下面

    2024年01月18日
    浏览(35)
  • STM32中断分组配置NVIC_PriorityGroup,移植操作系统需需注意NVIC_PriorityGroup_4

    一、先说明中断分组的由来 中断优先级分组表: 优先级分组 抢占优先级 响应优先级 bit[7:4] 分配情况 备注 NVIC_PriorityGroup_0 取值:0 取值:0~15 0:4 0bit抢占优先级、4bit响应优先级 NVIC_PriorityGroup_1 取值:0~1 取值:0~7 1:3 1bit抢占优先级、3bit响应优先级 NVIC_PriorityGroup_2 取值:0~3

    2024年02月04日
    浏览(31)
  • stm32-NVIC中断优先级管理(以古代官职角度分析)

    讲在前面的话: 博主在学习正点原子这一章节的时候很是懵,感觉摸不到门路,于是在网上找了一些相关的视频讲解,将他们的内容整合了一下,并尽量用易懂的话讲解。(本文基于stm32f103ZET6) CM3 内核支持256个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有

    2024年02月22日
    浏览(28)
  • 【STM32】HAL库的RCC复位状态判断及NVIC系统软件复位

    【STM32】HAL库的RCC复位状态判断及NVIC系统软件复位 在实际开发中 有时候会遇到复位状态不同 导致结果不同的情况 比如在上电复位时 电压不稳定 可能导致一些外部芯片无法正常工作 从而导致进行了错误的操作流程 所以 可以在程序运行后 加一个复位状态判断 用来检测是否

    2024年02月02日
    浏览(34)
  • 【STM32】进阶(一):抢占式优先级和响应式优先级(NVIC_PriorityGroupConfig)

    【STM32】STM32单片机总目录 STM32(Cortex-M3)中每个中断源都有两级优先级:抢占式优先级(pre-emption priority)和子优先级(subpriority),子优先级也叫响应式优先级。 望文知义,就是优先级高的可以抢占优先级的中断。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断

    2024年02月12日
    浏览(43)
  • Air32F103学习笔记-5.中断配置NVIC

    中断是单片机非常重要的功能,也是一个难点,本节单独讲下NVIC,以及NVIC的配置。 NVIC: Nested Vectored Interrupt Controller 内嵌向量中断控制器  是M3内核的一个外设 是用来总控中断的,例如中断优先级设置,中断使能等 下面看下《STM32F10xxx Cortex-M3编程手册-英文版》中关于NV

    2024年01月16日
    浏览(24)
  • 夜深人静学32系列10——GPIO中断/NVIC/EXTI/SYSCFG详解,外部中断控制LED

    上期我们学习了GPIO驱动数码管/蜂鸣器/LED和按键等外设,本期我们一起来学习STM32中断的相关内容 当CPU正在处理某个事件的时候,外界发生了紧急事件请求,CPU需要暂停当前的工作,转而去处理这个紧急事件,处理完之后,再次回到之前被中断的地方,继续执行原来的工作,

    2024年01月16日
    浏览(32)
  • 实训关于stm32单片机的多个传感器应用(附C++源码和解析)

    目录 1.实验的目的和要求 2.设计的软件环境 3.思路流程图 4.关键代码解析 4.1温湿度传感器(要监测当前环境的温度、湿度,通过温湿度传感器来实现的) 4.2.光敏电阻传感器(要监测当前环境的光照(黑天和白天),通过光敏电阻传感器来实现的,如果是黑夜,LED灯就亮蓝色

    2023年04月25日
    浏览(27)
  • 中断相关操作函数HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()

    HAL_NVIC_SetPriority() 函数是一个用于 设置中断优先级的函数 ,其定义如下: 其中,参数含义如下: IRQn :指定要设置优先级的中断号,类型为IRQn_Type,定义在stm32f4xx.h头文件中; PreemptPriority :指定抢占优先级,取值范围为0~15,其中0表示最高优先级,15表示最低优先级; SubP

    2024年02月07日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包