STM32学习笔记2---NVIC中断优先级管理

STM32 NVIC 中断优先级管理

STM32 有 84 个中断,包括 16 个内核中断和 68 个可屏蔽中断,具有 16 级可编程的中断优先级。
而我们常用的就是这 68 个可屏蔽中断,在 STM32F103 系列上面,又只有 60 个

中断分组:STM32 将中断分为 5 个组,组 0~4。该分组的设置是由 SCB->AIRCR 寄存器的 bit10~8 来定义的。

组0 111 0:4 0 位抢占优先级,4 位响应优先级
组1 110 1:3 1 位抢占优先级,3 位响应优先级
组2 101 2:2 2 位抢占优先级,2 位响应优先级
组3 100 3:1 3 位抢占优先级,1 位响应优先级
组4 011 4:0 4 位抢占优先级,0 位响应优先级

抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高。高优先级的抢占优先级可以打断低优先级的,而响应优先级不可以打断低级别的响应优先级。一共是四位,16级中断优先级。

中断优先分组函数:

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_x);	//设置中断分组
typedef struct		//定义初始化结构体变量
{
 uint8_t NVIC_IRQC;   //中断名
 uint8_t NVIC_IRQChannelPreemptionPriority;		//抢占优先级别
 uint8_t NVIC_IRQChannelSubPriority; //优先级别
 FunctionalState NVIC_IRQChannelCmd; //该中断是否使能
} NVIC_InitTypeDef;
NVIC_Init(&NVIC_InitStructure); //初始化函数

MDK地址映射

MDK 采用的方式是通过结构体来将寄存器组织在一起。GPIOA 的寄存器的地址=GPIOA 基地址+寄存器相对 GPIOA 基地址的偏移值,同时GPIO的基地址相对于所挂载的总线的地址是偏移的。

GPIOA_BASE 的地址为(APB2PERIPH_BASE + 0x0800)相对的GPIOA的BRR寄存器的偏移地址0x14,所以地址为GPIOA>BRR=GPIOA_BASE=0x40000000+0x10000+0x0800+0x014=0x40010814。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值