NVIC设置

NVIC终端优先级分组(Nest Vector Interrupt Control 嵌套式向量中断控制器)

CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。STM32F4只是使用了其中的一部分。

STM32F40xx/STM32F41xx的92个中断里面,包括10个内核中断,82个可屏蔽中断(常用)

```
分组寄存器SCB->AIRCR [10:8]    ,  IP bit[7:4]分配情况
AIRCR--------------应用程序中断控制寄存器
```

一般情况下,代码在执行过程中,只设置一次中断优先级分组,比如分组2,设置好之后一般不会再改变分组,随意改变分组会导致中断混乱,程序出现意想不到的事情

中断优先级分组函数

```
                                         void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);

单个中断的抢占优先级和响应优先级的设置  

中断优先级控制寄存器组:IP[240]    (Interrupt Priority Registers)

240个8位寄存器,每个中断只能使用一个寄存器来确定优先级。

STM32F40x系列一共82个可屏蔽中断,使用IP[81]-IP[0]

NVIC_Init();设置每个中断的抢占优先级和响应优先级

中断使能寄存器:ISER[8];32位

中断失能寄存器组:ICER[8];32位

中断挂起控制寄存器组 :IPCR[8];

中断解挂控制寄存器 : ICPR[8];

中断激活标志位寄存器:IABR[8];     作用,了解当前正在执行的中断是哪一个。如果对应位为1则正在执行。

                                   static __INLINE uint32_t NVIC_GetActive(IRQn_Type  IRQn)

中断优先级设置步骤

系统运行后先设置中断优先级分组。调用函数:

                 void NVIC_PriorityGroupConfig(uint32_t  NVIC_PriorityGroup);//执行过程中,只设置一次中断优先级分组。

针对每个中断,设置对应的抢占优先级和响应优先级:

                                        void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值