STM32中断的使能

lib_V3.0.0 的头文件misc.c的void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)说: 

/* Enable the Selected IRQ Channels ---------------*/
 NVIC->ISER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] = (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F);

============================

STM32有"60 maskable interrupt channels (not including the 16 interrupt lines of Cortex-M3)"[翻译]60个可屏蔽中断通道(不包含16个Cortex-M3的中断线),这60个可屏蔽中断通道的Position依次为0——59

所以尽管在core_cm3.h(Copyright (C) 2009 ARM Limited.)定义了__IO uint32_t  ISER[8]; ,实际上只用到了ISER[0]和ISER[1]。

其中Position0——31的使能位放到ISER[0]里,Position32——59的使能位放到ISER[1]里。

因此NVIC_InitStruct->NVIC_IRQChannel >> 0x05的值要么等于0,要么等于1。(Position0——31右移5位得0,Position32——59右移5位得1)

========================================

注意 : 0x1F的数据类型是(uint8_t)

注意: MDK无符号位右移为"逻辑右移",即右移后,左边空出的部分用0填补。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值