【读书笔记】EXTI外部中断 实例
2015-03-04 16:52
274 查看
本次使用开发板:
STM32f2XX系列
本次勾选的驱动列表如下:
Core
Startup
Framework ---包含msci,h、stm32f2xx_conf.h,不需要额外copy文件
RCC ---包含GPIO时钟和 SYSCFG时钟,SYSCFG时钟是因为配置中断源需要
GPIO ----指示灯、按键
EXTI ---外部中断,本次主角
SYSCFG --主要配置GPIOX引脚作为中断输入源
stm32f2xx_exti.c中记载了EXTI驱动的使用方法:
main文件如下:
STM32f2XX系列
本次勾选的驱动列表如下:
Core
Startup
Framework ---包含msci,h、stm32f2xx_conf.h,不需要额外copy文件
RCC ---包含GPIO时钟和 SYSCFG时钟,SYSCFG时钟是因为配置中断源需要
GPIO ----指示灯、按键
EXTI ---外部中断,本次主角
SYSCFG --主要配置GPIOX引脚作为中断输入源
stm32f2xx_exti.c中记载了EXTI驱动的使用方法:
main文件如下:
#include "stm32f2xx_conf.h" //按键对应引脚是PD7 //LED灯对应引脚是PC4 void BSP_LED_Init() { GPIO_InitTypeDef GPIOInitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC ,ENABLE); GPIOInitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIOInitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIOInitStructure.GPIO_OType = GPIO_OType_PP; GPIOInitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_Init(GPIOC,&GPIOInitStructure); } void BSP_EXTI_Init() { EXTI_InitTypeDef EXTIInitStructure; GPIO_InitTypeDef GPIOInitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD ,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); GPIOInitStructure.GPIO_Mode = GPIO_Mode_IN; GPIOInitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIOInitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_Init(GPIOD,&GPIOInitStructure); //配置PD7为中断输入源,需启用SYSCFG时钟 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD,EXTI_PinSource7); EXTIInitStructure.EXTI_Line = EXTI_Line7; EXTIInitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTIInitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTIInitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTIInitStructure); } void EXTI9_5_IRQHandler(void) { if(RESET != EXTI_GetFlagStatus(EXTI_Line7) ) { EXTI_ClearITPendingBit(EXTI_Line7); GPIO_ToggleBits(GPIOC,GPIO_Pin_4); } } void BSP_NVIC_Init() { NVIC_InitTypeDef NVICInitStructure; NVICInitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; NVICInitStructure.NVIC_IRQChannelCmd = ENABLE; NVICInitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVICInitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_Init(&NVICInitStructure); } int main(void) { BSP_LED_Init(); BSP_EXTI_Init(); BSP_NVIC_Init(); GPIO_SetBits(GPIOC,GPIO_Pin_4); while(1) { } }
相关文章推荐
- STM32 外部中断Exti
- EXTI—外部中断/事件控制器
- 51单片机0号与1号外部中断实例
- STM32的外部中断EXTI开发总结
- stm32 外部中断的使用(含实例)
- STM8S_009_EXTI外部中断
- EXTI—外部中断事件控制器
- stm32 外部中断的使用(含实例)
- STM32F1外部中断实例
- EXTI外部中断触发:神舟IV
- 第十五章:外部中断EXTI的配置注意事项
- stm32学习笔记 F1系列外部中断EXTI
- STM32 EXTI外部中断
- stm32 外部中断的使用(含实例)
- STM32中EXTI(外部中断)和NVIC(嵌套向量中断)的关系
- 第17章 EXTI—外部中断/事件控制器—零死角玩转STM32-F429系列
- 第17章 EXTI—外部中断/事件控制器—零死角玩转STM32-F429系列
- STM32学习笔记——外部中断EXTI
- 51单片机外部中断编程实例2
- STM32学习笔记之EXTI(外部中断)