STM32 中断控制线支持 19个外部中断 /事件请求,每个中断都有对应状态位和独立的触发与屏蔽设置。 STM32F103的 19个外部中断为:
线 0-15:对应 GPIO口的输入中断。
线 16:连接到 PVD 输出(掉电检测,掉电时可立即保存重要数据作用 )。
线 17:连接 RTC闹钟事件。
线 18:连接到 USB 唤醒事件。
每个 IO 口都可作为外部中断输入口的 STM32 的 IO 口远多于 16个,而 IO 口使用的中断线只有 16个。为此,GPIO管脚 GPIOx.0~GPIOx.15(X=A,F,G)分别对应中断线 0-15.这 样 每 个 中 断 线 对 应 了 7 个 IO 口 。 如 线 0 对 应 着
GPIOA.0,GPIOB.0,GPIOC.0,GPIOD.0,GPIOE.0,GPIOF.0,GPIOG .0 但是每个中断线每次只能连接到 1 个 IO 口上。
GPIO 与中断映射配置通过函数来实现
void GPIO_EXTILineConfig ( uint8_t GPIO_PortSource,
uint8_t GPIO_PinSource
)
例如:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE , GPIO_PinSource2);
即外部中断线 2 就和 GPIOE 映射起来了,显然是 GPIOE.2与 EXTI2 中断线连接
起来了。
接着需设置中断触发方式:
void EXTI_Init ( EXTI_InitTypeDef * EXTI_InitStruct )
例如:
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line4;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
以上例子设置了中断线 line4 的中断为下降沿触发。
设置好了中断线和 GPIO 的映射关系,然后又设置好了中断的触发模式等参数。
既然是外部中断,设计到中断我们当然需要设置 NVCI 的中断优先级。
完整的pdf格式文档51黑下载地址(共3页):
STM32之外部中断EXTI.pdf
(165.37 KB, 下载次数: 17)
|