打印
[开发工具]

STM32中NVIC(嵌套向量中断控制)的理解

[复制链接]
431|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雨果喝水|  楼主 | 2022-2-24 16:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

NVIC,中文名嵌套中断向量控制器,是Cortex-M3系列控制器内部独有集成单元,与CPU结合紧密,降低中断延迟时间并且能更加高效处理后续中断。举个例子,比如火车站买票,那些火车站的规章制度就是NVIC,规定学生和军人有比一般人更高优先级,它们则给你单独安排个窗口,同学与同学之间也有区别,那就是你也得排队,也就是你的组别(抢断优先级)和你的排队序号(响应优先级)决定你何时能买到票。

       抢断优先级,顾名思义,能再别人中断是抢占别人中断,实现中断嵌套。响应优先级则只能排队,不能抢在前面插别人的对,即不能嵌套。

STM32中指定优先级的寄存器为4位,其定义如下:

第0组:所有4位用于指定响应优先级
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级
第4组:所有4位用于指定抢占式优先级

以上定义也称作中断优先级分组,相关内容在STM32固件库的misc.h文件中有详细定义。

基础了解了就可以对中断进行操作了。


使用特权

评论回复
沙发
雨果喝水|  楼主 | 2022-2-24 16:50 | 只看该作者
第一步:使用void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)函数对优先级分组配置。NVIC_PriorityGroup可以配置为

NVIC_PriorityGroup_0 => 选择第0组
NVIC_PriorityGroup_1 => 选择第1组
NVIC_PriorityGroup_2 => 选择第2组
NVIC_PriorityGroup_3 => 选择第3组
NVIC_PriorityGroup_4 => 选择第4组

例如:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0)配置为0组。

使用特权

评论回复
板凳
雨果喝水|  楼主 | 2022-2-24 16:57 | 只看该作者
第二步:中断初始化结构体配置,结构体类型定义如下:
typedef struct

{

  uint8_t NVIC_IRQChannel;                 

  uint8_t NVIC_IRQChannelPreemptionPriority;  //抢断优先级

  uint8_t NVIC_IRQChannelSubPriority;  //响应优先级      

  FunctionalState NVIC_IRQChannelCmd;      

} NVIC_InitTypeDef;

使用特权

评论回复
地板
雨果喝水|  楼主 | 2022-2-24 17:09 | 只看该作者
例如:STM32外部中断0配置如下

    EXTI_NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;

         EXTI_NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  //抢占优先级别(0~1)

         EXTI_NVIC_InitStructure.NVIC_IRQChannelSubPriority = 7;  //响应优先级别(0~7)

         EXTI_NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

使用特权

评论回复
5
雨果喝水|  楼主 | 2022-2-24 17:09 | 只看该作者
第三步:中断初始化结构体初始化操作如下

         NVIC_Init(&EXTI_NVIC_InitStructure);

使用特权

评论回复
6
雨果喝水|  楼主 | 2022-2-24 17:10 | 只看该作者
第四步:开关总中断操作。在STM32中是通过改变CPU优先级来允许和禁止中断的。

(1)   下面两个函数等效关闭总中断

void NVIC_SETPRIMASK(void);
void NVIC_SETFAULTMASK(void);

(2)   下面两个函数等效开放总中断

void NVIC_RESETPRIMASK(void);
void NVIC_RESETFAULTMASK(void);

(3)   常用操作是先关后开中断

NVIC_SETPRIMASK();     // Disable Interrupts
NVIC_RESETPRIMASK(); // Enable Interrupts

两种类型函数要成对使用。

使用特权

评论回复
7
Uriah| | 2023-9-29 07:07 | 只看该作者

电镀半孔可用于标准和高级PCB设计。

使用特权

评论回复
8
万图| | 2023-9-29 07:11 | 只看该作者

不打坏仪器内部

使用特权

评论回复
9
Uriah| | 2023-9-29 08:14 | 只看该作者

具体采用灌封胶的种类的性能参数,主要看对电源模块的灌封用的胶的要求

使用特权

评论回复
10
帛灿灿| | 2023-9-29 09:03 | 只看该作者

共模电感对交流电流起着阻碍的作用

使用特权

评论回复
11
Bblythe| | 2023-9-29 10:06 | 只看该作者

因此,可以精确铣削电镀半孔并提高工艺可靠性。

使用特权

评论回复
12
帛灿灿| | 2023-9-29 10:10 | 只看该作者

不影响线路正常工作

使用特权

评论回复
13
Bblythe| | 2023-9-29 11:13 | 只看该作者

然而它的作用又可以分为阻抗匹配和减少信号边沿的陡峭程度两点

使用特权

评论回复
14
童雨竹| | 2023-9-29 12:02 | 只看该作者

高频变压器磁芯利用率高(与单端电路相比)、电源电压利用率高(与后面要叙述的半桥电路相比)、输出功率大、两管基极均为低电平,驱动电路简单。

使用特权

评论回复
15
Pulitzer| | 2023-9-29 13:05 | 只看该作者

静态测试是通过使用直流电压表和负载电流计来分别测试电源的输出电压和输出电流

使用特权

评论回复
16
周半梅| | 2023-9-29 13:09 | 只看该作者

变压器副边不对负载供电

使用特权

评论回复
17
公羊子丹| | 2023-9-29 14:08 | 只看该作者

主要起到支承作用,板不会散掉。

使用特权

评论回复
18
万图| | 2023-9-29 14:12 | 只看该作者

其定义为温度每升高1℃时电阻值发生变化的百分数

使用特权

评论回复
19
公羊子丹| | 2023-9-29 15:01 | 只看该作者

甚至会造成模块电源的损坏

使用特权

评论回复
20
周半梅| | 2023-9-29 15:15 | 只看该作者

应在操作时间内将胶料灌注完毕,否则影响流平

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

1153

帖子

0

粉丝