STM32所有的中断都有NVIC(中断向量控制器)进行控制优先级的控制,既所有中断都需要先配置NVIC
注意:NVIC不需要开启时钟,直接进行配置
1.NVIC函数库讲解:在固件库—— misc 函数库中
NVIC分组: void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
/**
* @brief Configures the priority grouping: pre-emption priority and subpriority.
* @param NVIC_PriorityGroup: specifies the priority grouping bits length.
* This parameter can be one of the following values:
* @arg NVIC_PriorityGroup_0: 0 bits for pre-emption priority
* 4 bits for subpriority
* @arg NVIC_PriorityGroup_1: 1 bits for pre-emption priority //抢占优先级
* 3 bits for subpriority //响应优先级
* @arg NVIC_PriorityGroup_2: 2 bits for pre-emption priority
* 2 bits for subpriority
* @arg NVIC_PriorityGroup_3: 3 bits for pre-emption priority
* 1 bits for subpriority
* @arg NVIC_PriorityGroup_4: 4 bits for pre-emption priority
* 0 bits for subpriority
* @retval None
*/
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
{
.......
}
配置 抢占优先级(pre-emption priority) 和 响应优先级(subpriority) 的个数
注意:优先级数量一旦配置,则整个程序后面就不能更改
NVIC参数初始化: void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
/**
* @brief Initializes the NVIC peripheral according to the specified
* parameters in the NVIC_InitStruct.
* @param NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure that contains
* the configuration information for the specified NVIC peripheral.
* @retval None
*/
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
{
}
结构体参数
NVIC_InitStruct.NVIC_IRQChannel : 选择中断的类型
NVIC_InitStruct.NVIC_IRQChannelCmd : 是否使能所选中断的通道
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority : 设置 抢占优先级 (0~15)
NVIC_InitStruct.NVIC_IRQChannelSubPriority : 设置 响应优先级 (0~15)
其他功能函数
功能函数1: