历史上的今天
今天是:2024年12月14日(星期六)
2018年12月14日 | KST-STM32学习之中断优先级与中断嵌套
2018-12-14 来源:eefocus
1、NIVC
ARM Cortex-M3 内核搭载了一个强大而方便的中断系统,称之为 NVIC(嵌套向量中断控制器)。
Cortex-M3 支持 256 个“中断通道”(16 个异常+240 个中断)以及对应的可编程 256 级中断优先级设置。
STM32 虽然采用 Cortex-M3 内核,但是只使用了其中的 84 个“中断通道”(16 个异常+68 个中断)以及 16 级中断优先级设置。
同时也记录下自己当时的一个插曲。

这个TIM6_IRQn在《STM32固件库手册》中查NVIC_IRQChannel的取值是没有的,然后咨询下老师,如下回复

再拐回头看下教程,着实一不一样

看来要不看最新的手册,要不就是直接参考头文件才行!
2、优先级及中断嵌套
优先级分为抢占优先级和响应优先级。
51所设置的优先级均属于抢占优先级,默认的便是响应优先级!
高抢占优先级可以嵌套低抢占优先级的中断。
两者抢占优先级相同,那么无论响应优先级是什么关系,这两者都没有嵌套关系。
假如两者同时发生,且抢占优先级相同,则根据响应优先级顺序执行;加入此时他们的相应优先级也相同,则根据中断清单表排位顺序执行,序号越小,对应优先级越高!
编程时需要注意:
首先要预先对程序的各个功能模块进行计算论证,开机初始化时一次性设置好优先级分组,以后就再也不动他了,避免同一个程序中使用多个优先级分组。
默认情况下,如何不设置中断优先级分组,则使用系统默认的优先级,即按照中断源清单的顺序执行。(没有抢占的概念,两者同时到来,谁的号小谁先执行!)。
具体的中断源清单可参考《STM32中文参考手册》9.1.2。
小结
①、系统运行开始的时候设置中断分组。
确定组号,也就是确定抢占优先级和子优先级的分配位数。调用函数为 NVIC_PriorityGroupConfig();
②. 设置所用到的中断的中断优先级别。
对每个中断调用函数为 NVIC_Init();
史海拾趣
|
汽车环境的宽工作电压要求、大瞬变电压以及大温度漂移等因素共同作用下,电子系统面临着严酷的条件,本文介绍如何在性能要求变得愈加苛刻的条件下,设计多个电源电压以满足汽车电子系统不同部分的要求。 ...… 查看全部问答> |
|
贴片电阻电容功率与尺寸对应表 电阻封装尺寸与功率关系,通常来说: 0201 1/20W 0402 1/16W 0603 1/10W 0805 1/8W 1206 1/4W 电容电阻外形尺寸与封装的对应关系是: 0402=1.0x0.5 0603=1.6x0.8 0805=2.0x1.2 1206=3.2x1.6 1210=3.2x2.5 1 ...… 查看全部问答> |
|
功率MOSFET具有导通电阻低、负载电流大的优点,因而非常适合用作开关电源(switch-mode power supplies,SMPS)的整流组件,不过,在选用MOSFET时有一些注意事项。 功率MOSFET和双极型晶体管不同,它的栅极电容比较大,在导通之前要 ...… 查看全部问答> |
|
目前手头有个项目使用omap3530做了一个显示器,采用wince系统,使用的是广州英码的核心板,本来厂家给定制内核但是不知为什么系统总是不稳定,现在想找一个熟悉wince的高手(要求人在北京)帮忙搞清楚什么原因,或者重新裁剪一下bsp,系统功能很简 ...… 查看全部问答> |
|
近期用atmega16 自身的ad测试陀螺仪,在测试的时候发现,当把ADC0接地时 LCD1602显示AD转换后的值为0096,接VCC=AVCC时 显示0993 这不对啊 应该是0和1023啊,这是程序 DDRA&=0xfe; PORTA&=0xfe; SF ...… 查看全部问答> |




