STM32之NVIC的深入详解
来源:互联网 发布:onelife维卡币软件下载 编辑:程序博客网 时间:2024/05/19 12:16
朋友们,如果你需要在STM32上移植RTOS,那么首先必须深入理解它的中断系统。什么是NVIC?即嵌套向量中断控制器(Nested Vectored Interrupt Controller)。STM32的中有一个强大而方便的NVIC,它是属于Cortex内核的器件,不可屏蔽中断 (NMI)和外部中断都由它来处理,而SYSTICK不是由 NVIC来控制的。
特性:
●
●
●
●
●
1.中断优先级分组
STM32(Cortex-M3)中有两个优先级的概念--抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。
1. 所有8位用于指定响应优先级
2. 最高1位用于指定抢占式优先级,最低7位用于指定响应优先级
3. 最高2位用于指定抢占式优先级,最低6位用于指定响应优先级
4. 最高3位用于指定抢占式优先级,最低5位用于指定响应优先级
5. 最高4位用于指定抢占式优先级,最低4位用于指定响应优先级
6. 最高5位用于指定抢占式优先级,最低3位用于指定响应优先级
7. 最高6位用于指定抢占式优先级,最低2位用于指定响应优先级
8. 最高7位用于指定抢占式优先级,最低1位用于指定响应优先级
因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:
第0组:所有4位用于指定响应优先级(16种)
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级(8种)
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级(4种)
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级(2种)
第4组:所有4位用于指定抢占式优先级
这里便对于于文章最前提到的固件库里相关的函数了——NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup),函数的参数共有5种:
这个函数的参数(NVIC_PriorityGroup值)有下列5种:
NVIC_PriorityGroup_0 => 选择第0组
NVIC_PriorityGroup_1 => 选择第1组
NVIC_PriorityGroup_2 => 选择第2组
NVIC_PriorityGroup_3 => 选择第3组
NVIC_PriorityGroup_4 => 选择第4组
void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
#ifdef
#else
#endif
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
// 设置抢占优先级0~1,响应优先级0~7
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; // TIM3 全局中断
}
说明:假如TIM3是正在运行的中断,如果USART1中断也发生了,则优先处理,TIM3被嵌套并挂起;如果TIM2中断发生了,则需要等到TIM3处理完之后再处理TIM2。这就是抢占优先级和响应优先级的区别。- STM32之NVIC的深入详解
- STM32之NVIC的深入详解
- STM32之NVIC的深入详解
- STM32之NVIC的深入详解
- stm32之NVIC的使用
- STM32的nvic之理解
- 【STM32】STM32之NVIC
- STM32学习之:NVIC的初步理解
- STM32之NVIC
- STM32之NVIC
- STM32之NVIC学习
- STM32之NVIC
- STM32之NVIC学习
- STM32之NVIC理解
- STM32之NVIC
- STM32之NVIC
- STM32的NVIC理解
- STM32的NVIC理解
- C#获取外网IP和地理位置(确保可用)
- 关于sql中的规范化理论
- css3简单实现火焰效果
- 时间控件之WdatePicker
- 最大网络流模板Dinic算法
- STM32之NVIC的深入详解
- Windows Server部署.net Core应用
- Linux下Git安装及配置
- MyBatis insert、update、delete、sql 标签
- 汇编语言 第三版 王爽 实验七 独立完成
- 实时视频传输的关键技术 H.264 全解析
- 期刊发表价格需要多少
- jQuery easyUI中表格的跨行跨列
- zuul报forward错误问题 com.netflix.zuul.exception.ZuulException: Forwarding error