历史上的今天

今天是:2024年09月28日(星期六)

2019年09月28日 | STM32F2系列的EXTI使用

发布者:笑脸猫 来源: eefocus关键字:STM32F2系列  EXTI使用 手机看文章 扫描二维码
随时随地手机看文章

1.外部中断事件线的映射


140个GPIO连接到了16个外部中断/事件线,如下图所示:

GPIO与外部中断/事件线关联图


另外7个外部中断/事件线分别连接:


EXTI Line 16:PVD输出;


EXTI Line 17:RTC报警事件;


EXTI Line 18:USB OTG FS唤醒事件;


EXTI Line 19:以太网唤醒事件;


EXTI Line 20:USB OTG HS唤醒事件;


EXTI Line 21:RTC Tamper and TimeStamp事件


EXTI Line 22:RTC唤醒事件。


2.EXTI与SYSCFG(System configurationcontroller)关系


SYSCFG主要用于重新定位存储器代码空间的位置,用于选择以太网的PHY和管理外部中断线与GPIO的联系。


如下图所示,用于配置外部中断并连接到EXTI外部中断。

3.EXTI初始化


voidKEY_EXTI_Initialize(void)


{


       EXTI_InitTypeDef EXTI_InitStructure;


       GPIO_InitTypeDef GPIO_InitStructure;


       NVIC_InitTypeDef NVIC_InitStructure;


 


    /* Enable GPIOC clock */


      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);


      /* Enable SYSCFG clock */


      RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);


 


       /* Configure PC2 pin as input floating */


      GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN;


      GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_NOPULL;


      GPIO_InitStructure.GPIO_Pin= GPIO_Pin_2;


      GPIO_Init(GPIOC,&GPIO_InitStructure);


 


       /* Connect EXTI Line2 to PC2 pin */


      SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC,EXTI_PinSource2);


 


       /* Configure EXTI Line2 */


      EXTI_InitStructure.EXTI_Line= EXTI_Line2;


       EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;


      EXTI_InitStructure.EXTI_Trigger= EXTI_Trigger_Falling; 


      EXTI_InitStructure.EXTI_LineCmd= ENABLE;


      EXTI_Init(&EXTI_InitStructure);


 


     /*Enable and set EXTI Line2 Interrupt to the lowest priority */


       NVIC_InitStructure.NVIC_IRQChannel =EXTI2_IRQn;


      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0x0F;


      NVIC_InitStructure.NVIC_IRQChannelSubPriority= 0x0F;


      NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;


      NVIC_Init(&NVIC_InitStructure);


}


3.1.使能作为外部中断的引脚的GPIO端口时钟


RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);


3.2.使能SYSCFG时钟


RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);


3.3.初始化GPIO引脚


GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN;


      GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_NOPULL;


      GPIO_InitStructure.GPIO_Pin= GPIO_Pin_2;


      GPIO_Init(GPIOC,&GPIO_InitStructure);


3.4.连接引脚到外部中断线


SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC,EXTI_PinSource2);


说明:每个引脚对应相应的线,如GPIO1则对应EXTI_PinSource1,查看1中的图。


3.5.配置外部中断线


EXTI_InitStructure.EXTI_Line =EXTI_Line2;


       EXTI_InitStructure.EXTI_Mode =EXTI_Mode_Interrupt;


      EXTI_InitStructure.EXTI_Trigger= EXTI_Trigger_Falling; 


      EXTI_InitStructure.EXTI_LineCmd= ENABLE;


      EXTI_Init(&EXTI_InitStructure);


3.6.使能中断


NVIC_InitStructure.NVIC_IRQChannel= EXTI2_IRQn;


      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0x0F;


      NVIC_InitStructure.NVIC_IRQChannelSubPriority= 0x0F;


      NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;


      NVIC_Init(&NVIC_InitStructure);


记得对IRQChannelPreemptionPriority和IRQChannelSubPriority赋值均为0x0F。


4.      EXTI中断函数


voidEXTI2_IRQHandler(void)


{


  if(EXTI_GetITStatus(EXTI_Line2) != RESET)


  {


    /* LED1闪烁标识符 */


    LED1_flag = 1;


 


    /* LED1闪烁次数 */


       LED1_Twinkle_Num = 2*Twinkle_Num;


 


       g_OD.Position_Offset =g_OD.current_angle;


   


    /* Clear the EXTI line 0 pending bit */


    EXTI_ClearITPendingBit(EXTI_Line2);


  }


}

关键字:STM32F2系列  EXTI使用 引用地址:STM32F2系列的EXTI使用

上一篇:关于STM32库函数中,u8_u16_等的定义
下一篇:STM32开发环境(MDK)搭建及第一个项目工程

推荐阅读

近日,哈佛大学的一个研究团队在机器人领域取得了重大突破,借助全新的制造技术创造出一个微型蜘蛛机器人,今后有望应用于医学领域。该团队的创新设计不仅有效减少侵入性外科手术,在医学领域做出重大改变,还可以从工业设施的维护到拯救灾民等各方面产生影响。到目前为止,大多数先进的小型机器人都采用某种特定的模式:它们均为厘米级机器人,通常只有一...
目前,谷歌翻译或其它在线翻译工具,都可以让用户输入一个外语词组或者一段话,就可以得出近似人工翻译的结果。但是,许多专家甚至是谷歌本身都告诫用户在完成复杂工作时,不要依靠流行的谷歌翻译等在线翻译工具。谷歌建议用户不要用机器翻译取代人工翻译。然而,美国政府已决定使用谷歌翻译和其他机器翻译工具,来决定是否应允许难民进入美国。共享给非营...
近日,小米 10T系列两款手机的配置信息及渲染图曝光,该系列将于9 月 30 日在海外发布。爆料消息显示,小米 10T 系列包括两款机型,小米 10T Pro 和小米 10T。 小米10系列均采用6.67英寸小挖孔LCD屏,背部是矩形三摄,排布比较特别,高像素主摄单独放置在最上方,下面为其他两颗摄像头和闪光灯,采用侧面指纹,机身厚度为9.33mm,重量为218g。...
据清华大学智能产业研究院消息,昨日,在 2021 世界智能网联汽车大会上,全球首个车路协同 DAIR-V2X 数据集正式发布。  据介绍,这是全球首个基于真实道路场景打造的车路协同数据集。该数据集由清华大学智能产业研究院(AIR)联合北京市高级别自动驾驶示范区、北京车网科技发展有限公司共同发布,百度 Apollo 提供技术支持。  IT之家了解到,DAI...

史海拾趣

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved