4.STM32-NVIC

NVIC是STM32内核的一个外设,用来管理整个芯片的中断。NVIC可以设置中断的优先级,也可以使能或者禁止某个外设中断。其实相当于每个外设中断的总开关。
NVIC工作主要分为几个步骤:1.设置NVIC中断优先级分组 2.设置抢占优先级和子优先级 3.使能中断的总开关
一.设置中断优先级分组
    库函数使用void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)设置中断优先级分组,总共有5个组,主要是对寄存器SCB_AIRCR中的PRIGROUP[2:0]进行配置
NVIC_PriorityGroup
PRIGROUP[2:0]
抢占优先级
子优先级
NVIC_PriorityGroup_0
0b111
0位
4位
NVIC_PriorityGroup_1
0b110
1位
3位
NVIC_PriorityGroup_2
0b101
2位
2位
NVIC_PriorityGroup_3
0b100
3位
1位
NVIC_PriorityGroup_4
0b011
4位
0位
二.设置中断源 抢占优先级和子优先级 使能中断
   /* 配置中断源:按键1 */
  NVIC_InitStructure.NVIC_IRQChannel = KEY1_INT_EXTI_IRQ;  
  /* 配置抢占优先级 */
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  /* 配置子优先级 */
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  /* 使能中断通道 */
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
 优先级设置:配置NVIC_IPRx寄存器,x从0-20。每一个NVIC_IPRx寄存器里面都有4个IP[]数组,每个IP[]数组只有4位用来配置抢占和子优先级(对应上面那个表格)
 中断的使能:配置NVIC_ISERx寄存器,x从0-2。每一个中断使能寄存器控制32个外设的中断使能,位对应关系与中断向量表一致,比如WWDG_IRQn是0,NVIC_ISER0的第0位就控制看门狗的中断使能
 中断的禁能:配置NVIC_ICERx寄存器,x从0-2。每一个中断禁能寄存器控制32个外设的中断使能,位对应关系与中断向量表一致,比如WWDG_IRQn是0,NVIC_ICER0的第0位就控制看门狗的中断禁能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴的嵌入式笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值