2022.5.4
(是什么)NVIC优先级分组
/**
@code
The table below gives the allowed values of the pre-emption priority and subpriority according
to the Priority Grouping configuration performed by NVIC_PriorityGroupConfig function
============================================================================================================================
NVIC_PriorityGroup | NVIC_IRQChannelPreemptionPriority | NVIC_IRQChannelSubPriority | Description
============================================================================================================================
NVIC_PriorityGroup_0 | 0 | 0-15 | 0 bits for pre-emption priority
| | | 4 bits for subpriority
----------------------------------------------------------------------------------------------------------------------------
NVIC_PriorityGroup_1 | 0-1 | 0-7 | 1 bits for pre-emption priority
| | | 3 bits for subpriority
----------------------------------------------------------------------------------------------------------------------------
NVIC_PriorityGroup_2 | 0-3 | 0-3 | 2 bits for pre-emption priority
| | | 2 bits for subpriority
----------------------------------------------------------------------------------------------------------------------------
NVIC_PriorityGroup_3 | 0-7 | 0-1 | 3 bits for pre-emption priority
| | | 1 bits for subpriority
----------------------------------------------------------------------------------------------------------------------------
NVIC_PriorityGroup_4 | 0-15 | 0 | 4 bits for pre-emption priority
| | | 0 bits for subpriority
============================================================================================================================
@endcode
*/
数字越低,级别越高!!
怎么用:
1.中断优先级分组函数(main函数前面声明):
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
2.设置单个中断的抢占优先级和响应优先级(c文件中单独设置)
中断参数初始化函数
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
展开:
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = (USART1_IRQn);//串口1中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=A ;// 抢占优先级为A
NVIC_InitStructure.NVIC_IRQChannelSubPriority = B;// 子优先级位B
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据上面指定的参数初始化NVIC寄存器
怎么用:
NVIC_InitTypeDef 结构体中间有三个成员变量,这三个成员变量的作用是:
NVIC_IRQChannel:定义初始化的是哪个中断,这个我们可以在 stm32f10x.h 中找到
每个中断对应的名字。自行查表
NVIC_IRQChannelPreemptionPriority:定义这个中断的抢占优先级别A。
NVIC_IRQChannelSubPriority:定义这个中断的子优先级别B。
(AB自己计算分配,一般是2和2)
NVIC_IRQChannelCmd:该中断是否使能。
总结
————————————————
收录:
1.CSDN博主「夏沫の浅雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42992084/article/details/104092151