STM32 NVIC 中断优先级管理
时间:11-11
来源:互联网
点击:
确定就最好不要更改。
比如我们设置整个系统的中断优先级分组值为2(2位抢占优先级,2位响应优先级”),那么方法是:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
设置好了系统中断分组,那么对于每个中断又怎么确定他的抢占优先级和响应优先级呢?下面看一个重要的函数为中断初始化函数NVIC_Init,其函数申明为:
voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct)
其中NVIC_InitTypeDef是一个结构体,可以看看结构体的成员变量:
- typedefstruct
- {
- uint8_t NVIC_IRQChannel;//定义初始化的是哪个中断,这个我们可以在 stm32f10x.h 中找到每个中断对应的名字。例如 USART1_IRQn。
- uint8_t NVIC_IRQChannelPreemptionPriority;//定义这个中断的抢占优先级别。
- uint8_t NVIC_IRQChannelSubPriority;//定义这个中断的子优先级别。
- FunctionalState NVIC_IRQChannelCmd;//该中断是否使能。
- }NVIC_InitTypeDef;
比如我们要使能串口1的中断,同时设置抢占优先级为1,子优先级位2,初始化的方法是:
- USART_InitTypeDef USART_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);
STM32NVIC中断优先级管 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)