NVIC是stm32内核的中断,下面给出在cm3权威指南中关于nvic的描述:

8.2 中断配置基础 每个外部中断都在 NVIC 的下列寄存器中“挂号”:

 使能与除能寄存器

 悬起与“解悬”寄存器

 优先级寄存器

 活动状态寄存器

另外,下列寄存器也对中断处理有重大影响

 异常掩蔽寄存器(PRIMASK, FAULTMASK 以及 BASEPRI)

 向量表偏移量寄存器

 软件触发中断寄存器

 优先级分组位段

说明在nvic中有一张表(一连串的地址),记录了每一个中断的使能位,优先位

下面再来看看中断初始化的函数nvic的初始化结构体nvic_inittypedef和初始化函数nvic_init

typedef struct {u8 NVIC_IRQChannel;//中断号u8 NVIC_IRQChannelPreemptionPriority;//抢占优先级u8 NVIC_IRQChannelSubPriority;//响应优先级FunctionalState NVIC_IRQChannelCmd;//使能与否
} NVIC_InitTypeDef;
void NVIC_Init(NVIC_InitTypeDef* init_struct)
{if (init_struct->NVIC_IRQChannelCmd != DISABLE) {u32 pri = (SCB_AIRCR_PRIGROUP & ~(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk)) >> SCB_AIRCR_PRIGROUP_Pos;pri = (((u32)init_struct->NVIC_IRQChannelPreemptionPriority << (0x4 - pri)) |(init_struct->NVIC_IRQChannelSubPriority & (0x0F >> pri)))<< 0x04;NVIC->IP[init_struct->NVIC_IRQChannel]           = pri;NVIC->ISER[init_struct->NVIC_IRQChannel >> 0x05] = 0x01 << (init_struct->NVIC_IRQChannel & 0x1F);}else {NVIC->ICER[init_struct->NVIC_IRQChannel >> 0x05] = 0x01 << (init_struct->NVIC_IRQChannel & 0x1F);}}
typedef struct {__IOM uint32_t ISER[8U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */uint32_t RESERVED0[24U];__IOM uint32_t ICER[8U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */uint32_t RSERVED1[24U];__IOM uint32_t ISPR[8U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */uint32_t RESERVED2[24U];__IOM uint32_t ICPR[8U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */uint32_t RESERVED3[24U];__IOM uint32_t IABR[8U];               /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */uint32_t RESERVED4[56U];__IOM uint8_t  IP[240U];               /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */uint32_t RESERVED5[644U];__OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */
}  NVIC_Type;

一个感性的认知,就不细究了,顺便一提,中断优先组最好设置为组4,无响应优先级,os里面可能会用到

关于NVIC中断设置相关推荐

  1. (四)STM32F407总线架构、时钟系统配置相关的函数,IO 引脚复用器和映射,NVIC中断管理,寄存器地址映射

    基础知识 一.GPIO输入输出各种模式 二.STM32F407总线架构 三.STM32F407时钟系统 (1) STM32F4 时钟树概述 (2)STM32F4 时钟初始化配置 (3)STM32F4 ...

  2. U24 NVIC中断配置

    2022.5.4 U24 NVIC中断配置 (是什么)NVIC优先级分组 怎么用: 1.中断优先级分组函数(main函数前面声明): 2.设置单个中断的抢占优先级和响应优先级(c文件中单独设置) 总结 ...

  3. stm32中断设置(寄存器讲解)

    与51对比 对比51来说,51的中断就那么几个,但中断的分类大体都差不多,分为内部中断和外部中断. 51的内部中断是定时器中断,串口中断,外部中断是外部中断0和1. 而stm32的中断就比51多太多了 ...

  4. Omap3530 的GPIO中断设置

    Omap3530 的GPIO中断设置: 1.配置成GPIO,申请GPIO中断 omap_cfg_reg(OMAP3_KBD_GPIO);配置成gpio if (gpio_request(OMAP3_K ...

  5. STM32 NVIC中断

    STM32 NVIC中断 注意事项 抢占优先级允许中断嵌套,响应优先级不允许中断嵌套. 配置参数 /*** @brief Configures the priority grouping: pre-e ...

  6. stm32关定时器_STM32定时器中断设置方法

    今天调试了STM32的定时器功能,STM32定时器比较多,但调试都是一样的,寄存器都是一一对应的.就拿TIM2举例说明.在网上搜了好多关于定时器的设置,但大多数都是一个版本,而且都是针对库函数操作的, ...

  7. N76E003中断设置流程

    首先说明N76E003所有引脚都可用于中断 N76E003为每个1/O引脚提供引脚中断输入,如果使用按钮或小键盘集,则检测引脚状态.通过l/O端口共享,可以分配一个最大8通道引脚中断检测.当键盘或小键 ...

  8. STM32高级定时器TIM1TIM8中断设置提醒

    最近要用STM32F103RCT6的TIM8做输入捕获,网上不好找到可以直接搬运的代码,然后就移植TIM2的输入捕获做,然后一直遇到匪夷所思的问题! 出现的问题就是,在主函数进入while循环前配置好 ...

  9. synchronized 与 Reentrant均为可重入锁 区别后者比前者增加了长时等待可中断 设置是否公平锁 绑定多个条件

    ① 两者都是可重入锁 两者都是可重入锁."可重入锁"概念是:自己可以再次获取自己的内部锁.比如一个线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获取这个对象的锁的时 ...

最新文章

  1. KitKat系统发现BUG:付费输入法更新后自动停用
  2. c#与科学计算之一:发掘 C# 特性赋予科学计算项目以威力(转贴)
  3. 金山卫士UI原理解析(2)CBkWindow
  4. adb devices 里面有很多 emulator-XXXX的解决方法
  5. 通过数组和枚举简化GPIO操作编码
  6. 不懂代码,如何做出实时刷新的数据大屏?
  7. java 线程 free_Java进阶05 多线程
  8. Outlook2010新建域内Exchang邮箱的另一种方法
  9. bash 别名_必不可少的Bash别名
  10. 监听套接字是非阻塞的,accept()返回的连接套接字是否也是阻塞的?
  11. 有赞团队:SaaS公司的系统稳定与安全机制,附Saas研报
  12. 阿里巴巴JAVA编码规范考试
  13. 数字图像处理(极简) 第一章 概述(docx)
  14. CSS3_04_弹性盒子_多媒体
  15. three.js实现世界地图城市迁徙图
  16. 对论文中模型进行编程实现时的注意要求和总结
  17. 鹤林全集·闲情志友 | 第一篇——阿鑫
  18. 手把手带你撸一个校园APP(八):校园通讯录模块
  19. 在使用firefly的RK3308的SDK使用buildroot构造文件系统时,遇到OEM分区和userdata不能挂在成功的问题
  20. MPLS之LDP协议

热门文章

  1. 浅析关系数据库和NoSql非关系数据库
  2. 上海科技馆 计算机,上海科技馆地图及各楼层介绍
  3. 智能催收系统中自然语言理解模块设计
  4. matlab观察函数logax,若a》1,函数fx=loga(x)-sinx恰有3个零点,则a的取值范围是?
  5. 自行拆包,疯狂魔改(jar)
  6. zemax学习笔记-光学系统中如何查询单个透镜的焦距
  7. python对数字排序_Python中数据的排序
  8. 海思IVE遮挡报警算法(OD)
  9. 3ds max文件导出osg或者ive格式
  10. 屏幕录制软件怎么用?录制电脑屏幕的技巧