STM32 NVIC优先级寄存器的说明

ARM内核函数来配置中断优先级的方法在之前的文章有提及过

本篇文章主要说明NVIC的相关寄存器作用,文章末尾也会总结内核函数配置中断优先级的方法

结合以下文章食用更佳[doge]

基于ARM中断体系的STM32中断NVIC优先级管理机制

NVIC控制的中断优先级分组是应用程序中断及复位控制寄存器(AIRCR)的[10:8]位段控制

通过该位段就可以设置不同的优先级分组

据优先级分组函数可见,底层还是配置该寄存器的位值


      本文核心内容:

        每个中断都有一个对应的优先级寄存器,每个优先级寄存器占用8位,在STM32中仅使用了高4位。

        当用上文的ARICR寄存器[10:8]位段设置好分组后,每个优先级寄存器会根据分组,将优先级寄存器的位分为高低两个位段,分别是抢占优先级和响应优先级。

        我们配置的抢占优先级值和响应优先级值就会写在其对应的位段上。

根据NVIC_SetPriority函数跳转可见
底层就是配置8位的优先级寄存器


优先级配置方法

1.NVIC管里中断源优先级分组设置

void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)----------core-cm4 1435

    设置总的优先级分组寄存器 --- 所有中断源优先级设置寄存器都会以此分组配置

    此函数只需要设置一次,一般放在main函数

2.计算优先级编码

uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)------core-cm4 1592

    设置具体的抢占优先级和响应优先级别值,参数1是分组值,参数2是抢占优先级值,参数3是响应优先级值

3.确定具体中断源

void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)-------------core-cm4 1550

    将计算出来的优先级编码值,与具体某个中断源联系起来

4.使能NVIC响应通道

void NVIC_EnableIRQ(IRQn_Type IRQn) -------------core-cm4 1467

NVIC模块响应片上外设中断源的开关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值