NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0
时间: 2023-12-06 17:42:07 浏览: 103
这是一个设置中断优先级的代码片段,其中 NVIC 表示 Nested Vectored Interrupt Controller,是 ARM Cortex-M 处理器中用于管理中断的模块。
在这里,NVIC_IRQChannelPreemptionPriority 表示当前要配置的中断通道的抢占优先级,这个值越小代表优先级越高,可以是 0 到 15 之间的整数。如果两个中断同时发生,抢占优先级较高的中断会中断当前正在执行的较低优先级中断的处理,并立即开始执行自己的中断处理程序。
除了抢占优先级之外,还有响应优先级,响应优先级低于抢占优先级,它表示同一时刻发生的多个中断之间的优先级关系。在实际使用中,需要根据系统的需求和实际情况来设置中断优先级。
相关问题
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);
这段代码是用来配置TIM2定时器中断的中断向量表的。具体来说,这里设置了TIM2_IRQn中断通道的抢占优先级为0,子优先级为1,并使能了该中断通道。这意味着,当TIM2定时器产生中断信号时,CPU会暂停当前任务,转而执行TIM2_IRQn中断服务程序。在中断服务程序中,可以编写相应的代码来对中断进行响应和处理。
#include <nvic.h> void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; /* Configure the NVIC Preemption Priority Bits */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /* Enable the USARTy Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
这是一个配置STM32F4微控制器中NVIC(Nested Vectored Interrupt Controller)的函数。在STM32F4中,NVIC用于管理中断,并且可以配置中断优先级。在这个函数中,首先通过调用NVIC_PriorityGroupConfig函数配置NVIC的优先级分组,然后通过配置NVIC_InitStructure结构体中的各个参数来初始化NVIC。在这个函数中,配置了USART1_IRQn和TIM3_IRQn两个中断的优先级和使能状态。USART1_IRQn用于USART1串口通信的中断处理函数,而TIM3_IRQn用于定时器3的中断处理函数。配置NVIC后,就可以启用这两个中断,并且可以在中断处理函数中进行相应的操作。
阅读全文
相关推荐














