STM32F4外部GPIO中断源使用笔记

STM32F4有7个外部GPIO中断源,它们负责分配给每个组的GPIO[15..0];

对应关系为

外部中断初始化顺序为:

	GPIO_InitTypeDef	GPIO_InitStructure;
	NVIC_InitTypeDef	NVIC_InitStructure;
	EXTI_InitTypeDef	EXTI_InitStructure;

	(RCC->AHB1ENR) |= RCC_AHB1ENR_GPIOEEN;//GPIO CLK ENABLE
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG时钟

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  	GPIO_InitStructure.GPIO_Speed = GPIO_Fast_Speed;
  	GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;
  	GPIO_Init(GPIOE, &GPIO_InitStructure);

	SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource4);
	SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource5);

	EXTI_InitStructure.EXTI_Line 	= EXTI_Line4 | EXTI_Line5;
	EXTI_InitStructure.EXTI_Mode 	= EXTI_Mode_Interrupt;
	EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
	EXTI_InitStructure.EXTI_LineCmd	= ENABLE;
	EXTI_Init(&EXTI_InitStructure);

	NVIC_InitStructure.NVIC_IRQChannel 					= EXTI4_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0x01;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority 		= 0x02;
	NVIC_InitStructure.NVIC_IRQChannelCmd				= ENABLE;
	NVIC_Init(&NVIC_InitStructure);

	NVIC_InitStructure.NVIC_IRQChannel 					= EXTI9_5_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0x00;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority 		= 0x02;
	NVIC_InitStructure.NVIC_IRQChannelCmd				= ENABLE;
	NVIC_Init(&NVIC_InitStructure);
  1. 使能SYSCFG时钟及IO口时钟
  2. 初始化IO口为输入
  3. 设置IO口与中断线的映射关系
  4. 初始化线上中断,设置触发条件
  5. 配置中断分组(NVIC)并使能中断
  6. 编写中断服务函数(清除中断标志位)

运行结果:

 

(全文完)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值