首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NVIC的使用

NVIC相关内容(补充) 中断编程的三个部分—— 1.配置NVIC_Config()函数 NVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。...因此控制中断的进行与NVIC_Config函数的配置密切相关。...对于上一个笔记所说的分组配置,一般通过NVIC_PriorityGroupConfig(uint32_t NVIC_Priority)函数,通过配置SCB—AIRCR寄存器来配置(入口参数范围是NVIC_PriorityGroup0...与上一笔记分组对应的5组配置 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel; //设置中断源 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority...= 1; // 指定抢占式优先级别1 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定响应优先级别1 NVIC_InitStructure.NVIC_IRQChannelCmd

85410
您找到你想要的搜索结果了吗?
是的
没有找到

NVIC设置

NVIC终端优先级分组(Nest Vector Interrupt Control 嵌套式向量中断控制器) CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置...STM32F40x系列一共82个可屏蔽中断,使用IP[81]-IP[0] NVIC_Init();设置每个中断的抢占优先级和响应优先级 中断使能寄存器:ISER[8];32位 中断失能寄存器组:ICER...static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) 中断优先级设置步骤 系统运行后先设置中断优先级分组。...调用函数: void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);//执行过程中,只设置一次中断优先级分组。...针对每个中断,设置对应的抢占优先级和响应优先级: void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct); 发布者:全栈程序员栈长,转载请注明出处:https

39530

NVIC库函数

1.void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct) 功能:根据NVIC_InitStruct结构体变量中的参数初始化NVIC外设 注释:结构体中的NVIC_IRQChannel...成员赋值要到stm32f10x.h中的IRQn_Type(STM32F10x中断数定义)去复制 例如:NVIC_Init(&NVIC_InitStructure); 2.void NVIC_PriorityGroupConfig...(NVIC_PriorityGroup_0); 3.void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset) 功能:设置向量表的位置和偏移量...注释:位置可以为RAM或者FLASH中;偏移量对RAM高于0x100且必须是0x200的倍数;偏移量对FLASH高于0x08000100 例如:NVIC_SetVectorTable(NVIC_VectTab_FLASH...注释:NVIC_LP_SEVONPEND(根据待处理请求唤醒,任意中断即可) NVIC_LP_SLEEPDEEP(深度睡眠使能) NVIC_LP_SLEEPONEXIT

80330

中断之NVIC

NVIC NVIC:嵌套向量中断寄存器 Nested vectored interrupt controller (NVIC)。...但是各个芯片厂商在设计芯片的时候会对 Cortex-M3 内核里面的 NVIC 进行裁剪,把不需要的部分去掉,所以说 STM32 的 NVIC 是 Cortex-M3 的 NVIC 的一个子集。...中断优先级分组库函数 NVIC_PriorityGroupConfig() /** * 配置中断优先级分组:抢占优先级和子优先级 * 形参如下: * @arg NVIC_PriorityGroup...NVIC_IRQChannelCmd; //中断使能或者失能 } NVIC_Type; NVIC_IROChannel:用来设置中断源,不同的中断中断源不一样,且不可写错,即 使写错了程序也不会报错...NVIC_IRQChannelCmd:中断使能(ENABLE)或者失能(DISABLE)。操作的 是 NVIC_ISER 和 NVIC_ICER 这两个寄存器。

60720

NVIC 中断优先级管理详解

,这就是NVIC的工作 优先级高的中断可以打断优先级低的中断,这样一个中断执行的时候被另外中断给打断,这个中断执行完再执行上一个中断,形成中断之间的嵌套,或许这就是NVIC 名字为内嵌向量中断控制器来源...,u8 subPriority){ // 1.这里是配置允许定时器中断 NVIC_InitTypeDef NVIC_Initstructure; //第一个参数指定具体是那种中断...,定时器3(TIM3就是) TIM3_TRQn,例如串口1是USART1_IRQn NVIC_Initstructure.NVIC_IRQChannel = TIM3_IRQn; //设置为定时器...3中断 NVIC_Initstructure.NVIC_IRQChannelCmd = ENABLE; //中断使能 //指定抢占式优先级 NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority...NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2);//后面的值不仅可以为2,还可以为0,1,3,4 //**************************

1.8K20

Cortex M3 NVIC与中断控制

一、NVIC概览 ——嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外, NVIC 还包含了 MPU、 SysTick 定时器以及调试控制相关的寄存器...此外, NVIC 还支持一个“永垂不朽”的不可屏蔽中断( NMI)输入。 NVIC 的访问地址是 0xE000_E000。...NVIC_ISER15 中断置使能寄存器 可读可写 0xE000E100~0xE000E13C 0x00000000 NVIC_ICER0~NVIC_ICER15 中断清使能寄存器 可读可写 0xE000E180...~0xE000E1BC 0x00000000 NVIC_ISPR0~NVIC_ISPR15 中断置请求寄存器 可读可写 0xE000E200~0xE000E23C 0x00000000 NVIC_ICPR0...~NVIC_ICPR15 中断清请求寄存器 可读可写 0xE000E300~0xE000E2BC 0x00000000 NVIC_IABR0~NVIC_IABR15 中断活跃位寄存器 只读 0xE000E300

59920

(十二)STM32——NVIC中断优先级管理

下面我们讲解一个重要的函数为中断初始化函数 NVIC_Init,其函数申明为: void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct) 其中 NVIC_InitTypeDef...比如我们要使能串口 1 的中断,同时设置抢占优先级为 1,响应优先级位 2,初始化的方法是: NVIC_InitTypeDef NVIC_InitStructure;; NVIC_InitStructure.NVIC_IRQChannel...= USART1_IRQn;//串口 1 中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;// 抢占优先级为 1 NVIC_InitStructure.NVIC_IRQChannelSubPriority...= 2;// 响应优先级位 2 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道使能 NVIC_Init(&NVIC_InitStructure...对每个中断调用函数为 NVIC_Init(); 好了,关于NVIC中断我们暂时只讲这些,希望对大家有帮助!

87220

中断-NVIC与EXTI外设详解(超全面)

2.NVIC内核外设寄存器 NVIC管理着中断向量表中的60个中断 在固件库中,NVIC 的结构体定义给每个寄存器都预留了很多位,恐怕为的是日后扩展功能。...配置好 NVIC_InitTypeDef 结构体然后就调用NVIC_Init()函数,由函数将参数写入寄存器 现在来具体来分析一下这个函数加深我们对NVIC寄存器的理解 void NVIC_Init(NVIC_InitTypeDef...(NVIC_InitStruct->NVIC_IRQChannelSubPriority)); if (NVIC_InitStruct->NVIC_IRQChannelCmd !...中断优先级分组这里是组1 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //选择中断源 NVIC_InitStruct.NVIC_IRQChannel...=1; //使能中断源 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; //调用NVIC初始化函数 NVIC_Init(&NVIC_InitStruct

1.5K52
领券