关于 EXTI 中断

2024-02-18 06:32
文章标签 中断 exti

本文主要是介绍关于 EXTI 中断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于 EXTI 中断

(2013-04-03 20:53:42)
 分类: STM32

一、EXTI 中断
      PA0,PB0,......PG0  共用一个中断标志 EXT0
      PA1,PB1,......PG1  共用一个中断标志 EXT1
      ...................................
      ...................................
      PA15,PA15,......PG15  共用一个中断标志 EXT15
      疑问:官方库函数有19条EXTI_Line,EXTI_Line0 -- EXTI_Line18,多出来的3条在哪里?
               祥见 EXTI_InitTypeDef.EXTI_Line 段落
二、在NVIC中:
      EXTI0--EXTI4各自有独立的IRQ_Channel,对应的中断服务函数是 void EXTI(n)_IRQHandler(void),(n)=0--4。
      EXTI5--EXTI9共用一个IRQ_Channel,对应的中断服务函数是 void EXTI9_5_IRQHandler(void)。
      EXTI10--EXTI15共用一个IRQ_Channel,对应的中断服务函数是 void EXTI15_10_IRQHandler(void)。
三、如何启用EXTI中断
      1 .启动所需GPIOn_Pin及AFIO的RCC时钟:
           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,RCC_APB2Periph_AFIO,ENABLE);
          !!!千万别忘记启动RCC_APB2Periph_AFIO!!!,否则管脚只能做普通高低电平来用。
      2 .用GPIO_InitStructure(用GPIO_InitTypeDef预先定义一下)设置所需GPIO口的Pin,Speed,Mode,

          然后用GPIO_Init(GPIOn,&GPIO_InitStructure)来启用这些GPIO的Pin。
      3 .用GPIO的中断线控制函数启动指定GPIO的某个Pin
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOG, GPIO_PinSource7);
      4 .初始化中断,类似初始化GPIO
          a)定义一个初始化的结构变量 EXTI_InitTypeDef  EXTI_InitStructure;
             !!!这步应该在函数外预先声明名!!!
          b)输入该结构的成员值:EXTI_Line,EXTI_Mode,EXTI_Trigger,EXTI_LineCmd
          c)用EXTI_Init(&EXTI_InitStructure);完成初始化
          例:
             RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG | RCC_APB2Periph_AFIO , ENABLE );

             
            GPIO_EXTILineConfig(GPIO_PortSourceGPIOG, GPIO_PinSource7);

             
            EXTI_InitStructure.EXTI_Line = EXTI_Line7;
            EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
            EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
            EXTI_InitStructure.EXTI_LineCmd = ENABLE;
            EXTI_Init(&EXTI_InitStructure);
四、可以用软件模拟一个EXTI中断的产生,命令如下:
          EXTI_GenerateSWInterrupt(EXTI_Line7);//产生EXTI_Line7的中断。

五、对应的中断服务函数在 "stm32f10x_it.c" 中

六、需用的 ".c" 文件有:

         stm32f10x_rcc.c

         stm32f10x_nvic.c

         stm32f10x_gpio.c

         stm32f10x_exti.c

         stm32f10x_it.c

 原文:http://blog.sina.com.cn/s/blog_537d61430101a2t9.html

这篇关于关于 EXTI 中断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/720325

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

FreeRTOS学习笔记(四)Freertos的中断管理及临界保护

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Cortex-M 中断管理1.1 中断优先级分组1.2 相关寄存器1.3 相关宏定义1.4 FreeRTOS 开关中断 二、临界段及其保护2.1 taskENTER_CRITICAL( ) 和 taskEXIT_CRITICAL( )2.2 taskENTER_CRITICAL_FROM_ISR( )

C8T6超绝模块--EXTI

C8T6超绝模块–EXTI 大纲 控制流程结构体分析EXTI实现按键 具体案例 控制流程 这里是流程框图,具体可以去看我STM32专栏的EXTI的具体分析 结构体分析 typedef struct {uint32_t EXTI_Line; // 中断/事件线EXTIMode_TypeDef EXTI_Mode; // EXTI 模式EXTITrigger_TypeDef EXTI_

Cortex-A7:ARM官方推荐的嵌套中断实现机制

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版 1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A7中断向量表中仅为外部中断设置了一个中断向量可以看出。本文介绍ARM官方推荐使用的嵌套中断实现机

外部中断的边缘触发和电平触发

MCS-51单片机中的边缘触发是指当输入引脚电平由高到低发生跳变时,才引起中断。而电平触发是指只要外部引脚为低电平就引起中断。         在电平触发方式下,当外部引脚的低电平在中断服务返回前没有被拉高时(即撤除中断请求状态),会引起反复的不需要的中断,造成程序执行的错误。这类中断方式下,需要在中断服务程序中设置指令,清除外部中断的低电平状态,使之变为高电平。

【Java编程思想】线程的基本协作机制 与 线程的中断

wait/notify Java在Object类中定义了一些线程协作的基本方法,wait和notify public final void wait() throws InterruptedException;public final native void wait(long timeout) throws InterruptedException; 一个带时间参数,单位是毫秒,表示最

基于IMX6ULL的Cortex-A中断原理讲解,以及编写其中断向量表

首先借助STM32我们需要了解中断系统是如何构成的         会有一个中断源,也就是能够向CPU发出中断请求的设备或事件。中断源不分硬件和软件,也就是产生中断信号,就会执行中断服务函数         但是CPU是如何知道中断源产生后就找到对应的中断服务函数呢,这个时候就要引入中断向量表,它的主要功能是描述中断对应的中断服务函数,每个中断源都有一个唯一的中断号(也称向量号),

【银河麒麟高级服务器操作系统实例】虚拟化平台系统服务中断现象分析及处理建议

服务器环境以及配置 【机型】虚机 处理器: Kunpeng-920 内存: 40G 【内核版本】 4.19.90-23.8.v2101.ky10.aarch64 【OS镜像版本】 银河麒麟操作系统 Kylin-Server-10-SP1-Release-Build20-20210518-arm64 【第三方软件】 智能运维系统、mysql数据集群 现象描述 环境描

s3c2440---中断控制器

一、概述 S3C2440A 中的中断控制器接受来自 60 个中断源的请求。提供这些中断源的是内部外设,如 DMA 控制器、 UART、IIC 等等。 在这些中断源中,UARTn、AC97 和 EINTn 中断对于中断控制器而言是“或”关系。 当从内部外设和外部中断请求引脚收到多个中断请求时,中断控制器在仲裁步骤后请求 ARM920T 内核的 FIQ 或 IRQ。 仲裁步骤由硬件优先级逻辑决定

Linux 一个简单的中断信号实现

1.查看手册,学习中断处理图 流程:(次级源->开关)到 源挂起 到 开关  到 处理优先级 到 中断挂起标志 到 CPSR里面的开关(图中未展现) 最后cpu处理 此次我们先使用k1按键实现中断,即是eint8 2.此次仅涉及一个中断挂起,步骤较简单,有的寄存器未涉及处理。 寄存器挂起后,通过写1清除对应位( 硬件设计逻辑: 中断标志位通常由硬件自动设置为 1,表示中断发生。