神舟IV学习笔记(八)外部中断EXIT

发布者:晴天7777最新更新时间:2017-02-17 来源: eefocus关键字:神舟IV  外部中断  EXIT 手机看文章 扫描二维码
随时随地手机看文章

外部中断有点像51单片机的中断INT一样,都能够设置为上升沿、下降沿和双边沿触发;不同之处在于STM32的大多数GPIO口都能设置为外部中断输入功能,这样带来的好处有:在PCB设计和需求大量外部中断功能很有帮助。STM32F107VCT一共有5组GPIO,每组又有16个引脚。这里提供复用的方式提供了16个中断源。PA0、PB0、PC0、PD0、PE0都是共有相同的中断源EXIT0。

开发板上的按键对应关系为:KEY1—PC4;KEY2—PB10;KEY3—PC13;KEY4—PA0。外接上拉电阻,在设置GPIO的状态的时候,可以设置为输入上拉模式。然后采用GPIO_EXTILineConfig库函数将GPIO设置为EXTI模式。

/* Selects KEY1-PC.04 as EXTI Line 4 */

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource4);

第三步是设置EXTI的模式,最后是编写相应的中断函数。

需要注意的是中断向量表中EXTI5到EXTI9是复用在一起的,名称为EXTI9_5;

EXTI10到EXTI15是复用在一起的,名称为EXTI15_10;

这部分主程序为:

void NVIC_Configuration(void)

{

  NVIC_InitTypeDef NVIC_InitStructure;

  /* Configure the Priority Group to 2 bits */

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

  /* Enable the EXTI Interrupt */

  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  NVIC_Init(&NVIC_InitStructure);

 

  NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

  NVIC_Init(&NVIC_InitStructure);

 

  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;

  NVIC_Init(&NVIC_InitStructure);

 

}

int main(void)

{

  /* Setup STM32 system (clock, PLL and Flash configuration) */

  SystemInit();

 

  /* Add your application code here

     */

  LED_Configuration();

  KEY_Configuration();//按键时钟和端口配置

  EXIT_Configuration();//外部中断配置

  NVIC_Configuration();

  /* Infinite loop */

  while (1)

  {

  }

}

void EXTI0_IRQHandler(void)  /* Key 4 */

{

  if(EXTI_GetITStatus(EXTI_Line0) != RESET)

  {

    LED_ALL_OFF();

    LED4_ON();

    /* Clear the EXTI Line 0 */

    EXTI_ClearITPendingBit(EXTI_Line0);

  }

}

/*******************************************************************************

* Function Name  : EXTI4_IRQHandler

* Description    : This function handles External interrupt Line 4 request.

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/

void EXTI4_IRQHandler(void) /* Key 1 */

{

  if(EXTI_GetITStatus(EXTI_Line4) != RESET)

  {

    LED_ALL_OFF();

    LED1_ON();

    /* Clear the EXTI Line 4 */

    EXTI_ClearITPendingBit(EXTI_Line4);

  }

}

 

/*******************************************************************************

* Function Name  : EXTI15_10_IRQHandler

* Description    : This function handles External lines 15 to 10 interrupt request.

* Input          : None

* Output         : None

* Return         : None

*******************************************************************************/

void EXTI15_10_IRQHandler(void) /* Key 2 & 3 */

{

  if(EXTI_GetITStatus(EXTI_Line10) != RESET)

  {

    LED_ALL_OFF();

    LED2_ON();

    /* Clear the EXTI Line 10 */ 

    EXTI_ClearITPendingBit(EXTI_Line10);

  }

 

  if(EXTI_GetITStatus(EXTI_Line13) != RESET)

  {

    LED_ALL_OFF();

    LED3_ON();

    /* Clear the EXTI Line 13 */ 

    EXTI_ClearITPendingBit(EXTI_Line13);

  }

 

}


关键字:神舟IV  外部中断  EXIT 引用地址:神舟IV学习笔记(八)外部中断EXIT

上一篇:神舟IV学习笔记(五)实时时钟RTC
下一篇:神舟IV学习笔记(七)定时器中断流水灯

推荐阅读最新更新时间:2024-03-16 15:33

外部中断处理和内部中断处理的差异性
在现今SOC设计中,当周边装置(Peripheral IP)想要和中央处理器(CPU)沟通时,最常使用的机制是透过中断(Interrupt)。周边装置可触发中断给中央处理器,当中央处理器接收到中断后,则可判断是由那个周边装置触发些中断,接着处理相对应的中断处理程序(ISR,Interrupt Service Routine),藉此达到彼此沟通的目的。 而AndesCore™在中断处理方面,共支持两种模式:内部中断处理器(IVIC Mode,Internal Vector Interrupt Controller)和外部中断处理器(EVIC Mode,External Vector Interrupt Controller)。其中
[单片机]
<font color='red'>外部中断</font>处理和内部中断处理的差异性
PIC16F917 RB0(INT)外部中断练习程序
/*************PIC16F917单片机程序*********************/ /*************************************************************/ /*****File Function : 中断练习程序 *****/ /*****Program Author : ZhengWen(ClimberWin) *****/ /*****MCU : PIC16F917 内部晶振 *****/ /*****Compile Date : 2010/08/17 *****/ /*****Edition Inf
[单片机]
PIC16F917 RB0(INT)<font color='red'>外部中断</font>练习程序
STM32-EXTI中断的分析及应用
EXTI中断/事件控制器,管理了控制器的20根中断/事件线。每个对应了一个边沿检测器,可以实现输入信号的上升沿或者下降沿检测,EXTI可以实现对每个中断或者事件的单独配置 这里中断通常是指GPIO的中断 事件可以是AD/DA转换 TIM定时器等··· 通过书上的EXTI 功能框图可以清楚的知道配置EXTI中断的具体过程 这里拿EXTI控制GPIO为例: 编程要领: 1)初始化用来产生中断的GPIO 2)初始化EXTI 3)配置NVIC 4)编写中断函数 这里只贴出配置EXTI和中断函数的编写: void EXTI_Key_config(void) { GPIO_InitTypeDef G
[单片机]
STM32-<font color='red'>EXTI</font>中断的分析及应用
STM32F072RB 实作笔记(五)- 计时器加上中断EXTI_IRQHandler(一)
中断技巧增加平行处理的能力 写单晶片程式有意思的地方除了那种“掌控”的感觉外,接着就是有那种“处理复杂事件的能力”! 基本的程式是循序进行,时间就会被耽搁。若是想要把程式并行处理,那么,“中断”插入的方法是个好帮手,这个时候就要能同时处理不同的事件。我常常比喻电脑程式就像厨房;火炉是CPU,餐盘容器是暂存器,食材就是资料;这个做菜的程序容易理解,只是这时间不容易拿捏,所以,单晶片的内部计时器就是一个好帮手。 这个M0 的计时器和中断的写法,比51族的mpu方便多了。 在M0 的C 语言里,使用中断功能要写下几个功能: 设定中断来源和 开启中断程式的向量指标 编写中断后要执行的服务程式 a.是否接受巢式中断 b.主程式转移进来
[单片机]
STM32F072RB 实作笔记(五)- 计时器加上中断<font color='red'>EXTI</font>_IRQHandler(一)
STM32之中断与事件---一个使用GPIO作为外部中断的示例
1.GPIO的正确设置 GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIOD clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); /* Configure PD.03, PC.04, as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &GPIO_InitSt
[单片机]
HAL库-STM32F4 外部中断-延时
注:资料来源:野火《零死角玩转STM32-F429》、ST-《STM32F4xx中文参考手册》、ST-《Cortex™-M4内核编程手册》 开始: 1.嵌套向量中断寄存器 (NVIC): 嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚到中断的高效处理。包括内核异常在内的所有中断均通过 NVIC 进行管理。 在CMSIS\Include\core_cm4.h头文件中,给出了NVIC结构体以及一些基本函数。 详细介绍以及寄存器、基层配置查询参考资料ST-《Cortex™-M4内核编程手册》 2.外部中断/事件控制器 (EXTI): 外部中断/事件控制器包含多达 23 个用于产生事件
[单片机]
STM32之EXTI——外部中断
互联网的广大网友,大家早上中午晚上好、EXTI、、、故名思义、、EX表外,出、、I表示Intrrupt、、所以合起来就是外部中断、、、说到这、、我觉得我最近的六级水平(背单词)又进了一步,稍微自夸了下下、、英语重要呀、、所以各位要多读英语呀、、、 之前的51单片机也有外部中断0和外部中断1、咦?强大的STM32怎么能输给51呢是吧、、根据“葵花宝典”第STM32篇参考手册中明文规定:112通用I/O端口以下图的方式连接到16个外部中断/事件线上: 有看出点什么猫腻来没??看出来的有赏喔、、世上最残酷的惩罚就是放一大堆美女和金钱在你面前却不是你的、、、好了、、这么久没人回答、我就当你们看不出了哈,我来说说:为什么是只有16
[单片机]
STM32之<font color='red'>EXTI</font>——<font color='red'>外部中断</font>
STM32之EXTI
STM32因为具有NVIC使其中断体系大大提升,NVIC使用来管理异常与中断的,并且NVIC模块中还包含SysTick。 这次我们来讲一下EXTI外部中断。 1.在用到时我们必须要设置中断向量表,我们要将中断向量表存储在一个固定的位置,究竟是RAM还是FLASH就得看你的需求了。 2.STM32中中断优先级分组总共有四种分组方式,我们只能用其中的一组。所以在设置完毕中断向量表的存储位置后我们就得选择合适我们的中断优先级分组。(这一部分可以我的STM32之NVIC一文) 3.然后你要使用哪个外部中断就对此中断设置抢占优先级,亚优先级,以及打开。 4.然后就是相应中断的模式,方式,等配置了 5.设置相应的引脚为输入
[单片机]
STM32之<font color='red'>EXTI</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved