精华内容
下载资源
问答
  • 配置exti校验程序,适合stm32f10x系列的单片机驱动代码exti中断等操作
  • EXTI LEARNING STM 32
  • EXTI库函数

    千次阅读 2018-08-04 17:39:05
    1.void EXTI_DeInit(void) 功能:将EXTI外设寄存器重置为默注释 注释:RCC_APB2PeriphResetCmd参数中没有EXTI外设的的宏,该外设重置采取的是直接向寄存器赋默认值的操作 例如:EXTI_DeInit();   2.void EXTI_...

    1.void EXTI_DeInit(void)

    功能:将EXTI外设寄存器重置为默注释

    注释:RCC_APB2PeriphResetCmd参数中没有EXTI外设的的宏,该外设重置采取的是直接向寄存器赋默认值的操作

    例如:EXTI_DeInit();

     

    2.void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)

    功能:根据EXTI_InitStruct结构体中所配置的参数来初始化EXTI外设

    注释:结构体中模式成员设置了被使能线路为事件请求还是中断请求

    例如:EXTI_Init(&EXTI_InitStructure);

     

    3.void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)

    功能:将EXTI_InitStruct结构体中各成员按默认值填充

    注释:只填充了结构体,还没有将参数写入到寄存器中(xxx_Init)

    例如:EXTI_StructInit(&EXTI_InitStructure);

     

    4.void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)

    功能:产生一个软件中断

    注释:如果在EXTI_IMR和EXTI_EMR中允许产生该中断,则此时将产生一个中断

    例如:EXTI_GenerateSWInterrupt(EXTI_Line6);

     

    5.FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)

    功能:检查指定的外部中断线的标志是否被置位(如果在EXTI_IMR和EXTI_EMR中允许产生该中断,则此时将产生一个中断)

    注释:该函数没有检查EXTI_IMR和EXTI_EMR状态,它只是纯粹读取中断标志位的状态,但是不一定会响应中断

                中断发生有两个条件,一是中断标志位置位,二是中断允许

    例如:

    if(EXTI_GetFlagStatus(EXTI_Line8) == RESET)
    {
    }
    else
    {
    }

     

    6.void EXTI_ClearFlag(uint32_t EXTI_Line)

    功能:清除EXTI线路的挂起标志

    注释:与EXTI_ClearITPendingBit完全一致

    例如:EXTI_ClearFlag(EXTI_Line6);

     

    7.ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)

    功能:检查指定外部中断线的状态是否有效,检查中断状态,也就是中断是否发生

    注释:除了读取中断标志位,还查看 EXT_IMR 寄存器是否对该中断进行屏蔽,在中断挂起 & 没有屏蔽的情况下就会响应中断

    例如:

    if(EXTI_GetITStatus(EXTI_Line8) == RESET)
    {
    }
    else
    {
    }

     

    8.void EXTI_ClearITPendingBit(uint32_t EXTI_Line)

    功能:清除EXTI线路挂起位

    注释:与EXTI_ClearFlag完全一致

    例如:EXTI_ClearITPendingBit(EXTI_Line6);

    展开全文
  • STM32系统学习——EXTI(外部中断)

    万次阅读 多人点赞 2018-05-11 14:12:11
    一、 EXTI 简介 EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的 20个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。...

    一、 EXTI 简介
    EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的 20个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。

    二、 EXTI 功能框图
    EXTI 的功能框图包含了 EXTI 最核心内容,掌握了功能框图,对 EXTI 就有一个整体的把握,在编程时思路就非常清晰。EXTI功能框图见图。
    在图可以看到很多在信号线上打一个斜杠并标注“20”字样,这个表示在控制器内部类似的信号线路有 20 个,这与 EXTI 总共有 20 个中断/事件线是吻合的。所以我们只要明白其中一个的原理,那其他 19 个线路原理也就知道了。
    这里写图片描述
    EXTI 可分为两大部分功能,一个是产生中断,另一个是产生事件,这两个功能从硬件上就有所不同。
    首先我们来看图中红色虚线指示的电路流程。它是一个产生中断的线路,最终信号流入到 NVIC 控制器内。
    编号 1 是输入线,EXTI 控制器有 19 个中断/事件输入线,这些输入线可以通过寄存器设置为任意一个 GPIO,也可以是一些外设的事件,这部分内容我们将在后面专门讲解。输入线一般是存在电平变化的信号。
    编号 2 是一个边沿检测电路,它会根据上升沿触发选择寄存(EXTI_RTSR)和下降沿触发选择寄存器(EXTI_FTSR)对应位的设置来控制信号触发。边沿检测电路以输入线作为信号输入端,如果检测到有边沿跳变就输出有效信号 1 给编号 3 电路,否则输出无效信号0。而 EXTI_RTSR 和 EXTI_FTSR 两个寄存器可以控制器需要检测哪些类型的电平跳变过程,可以是只有上升沿触发、只有下降沿触发或者上升沿和下降沿都触发。
    编号 3 电路实际就是一个或门电路,它一个输入来自编号 2 电路,另外一个输入来自软件中断事件寄存器(EXTI_SWIER)。EXTI_SWIER允许我们通过程序控制就可以启动中断/事件线,这在某些地方非常有用。我们知道或门的作用就是有 1 就为 1,所以这两个输入随便一个有有效信号 1就可以输出 1 给编号 4和编号 6电路。
    编号 4 电路是一个与门电路,它一个输入是编号 3 电路,另外一个输入来自中断屏蔽寄存器(EXTI_IMR)。与门电路要求输入都为 1 才输出 1,导致的结果是如果 EXTI_IMR 设置为 0 时,那不管编号 3 电路的输出信号是 1 还是 0,最终编号 4 电路输出的信号都为 0;
    如果EXTI_IMR设置为1时,最终编号4电路输出的信号才由编号3电路的输出信号决定,这样我们可以简单的控制 EXTI_IMR 来实现是否产生中断的目的。编号 4 电路输出的信号会被保存到挂起寄存器(EXTI_PR)内,如果确定编号 4 电路输出为 1 就会把 EXTI_PR 对应位置 1。
    编号 5 是将 EXTI_PR 寄存器内容输出到 NVIC 内,从而实现系统中断事件控制。
    接下来我们来看看绿色虚线指示的电路流程。它是一个产生事件的线路,最终输出一个脉冲信号。
    产生事件线路是在编号3电路之后与中断线路有所不同,之前电路都是共用的。
    编号6电路是一个与门,它一个输入来自编号 3 电路,另外一个输入来自事件屏蔽寄存器(EXTI_EMR)。如果 EXTI_EMR设置为 0时,那不管编号 3电路的输出信号是 1还是 0,最终编号 6 电路输出的信号都为 0;如果 EXTI_EMR 设置为 1 时,最终编号 6 电路输出的信号才由编号 3 电路的输出信号决定,这样我们可以简单的控制 EXTI_EMR 来实现是否产生
    事件的目的。
    编号 7 是一个脉冲发生器电路,当它的输入端,即编号 6 电路的输出端,是一个有效信号 1 时就会产生一个脉冲;如果输入端是无效信号就不会输出脉冲。
    编号 8 是一个脉冲信号,就是产生事件的线路最终的产物,这个脉冲信号可以给其他外设电路使用,比如定时器 TIM、模拟数字转换器 ADC等等,这样的脉冲信号一般用来触发 TIM 或者 ADC开始转换。
    产生中断线路目的是把输入信号输入到 NVIC,进一步会运行中断服务函数,实现功能,这样是软件级的。而产生事件线路目的就是传输一个脉冲信号给其他外设使用,并且是电路级别的信号传输,属于硬件级的。
    另外,EXTI是在 APB2总线上的,在编程时候需要注意到这点。

    三、 中断/事件线
    EXTI有 20个中断/事件线,每个 GPIO都可以被设置为输入线,占用 EXTI0至 EXTI15,还有另外七根用于特定的外设事件。
    4根特定外设中断/事件线由外设触发,具体用法参考《STM32F10X-中文参考手册》中对外设的具体说明。
    这里写图片描述
    EXTI0至 EXTI15用于 GPIO,通过编程控制可以实现任意一个 GPIO作为 EXTI的输入源。由表可知,EXTI0 可以通过 AFIO 的外部中断配置寄存器 1(AFIO_EXTICR1)的EXTI0[3:0]位选择配置为 PA0、PB0、PC0、PD0、PE0、PF0、PG0、PH0 或者 PI0,其他 EXTI线(EXTI中断/事件线)使用配置都是类似的。
    这里写图片描述

    四、 EXTI 初始化结构体详解
    标准库函数对每个外设都建立了一个初始化结构体,比如 EXTI_InitTypeDef,结构体成员用于设置外设工作参数,并由外设初始化配置函数,比如 EXTI_Init()调用,这些设定参数将会设置外设相应的寄存器,达到配置外设工作环境的目的。
    初始化结构体和初始化库函数配合使用是标准库精髓所在,理解了初始化结构体每个成员意义基本上就可以对该外设运用自如了。初始化结构体定义在 stm32f10x_exti.h 文件中,初始化库函数定义在 stm32f10x_exti.c 文件中,编程时我们可以结合这两个文件内注释使用。

    EXTI 初始化结构体
     typedef struct {
     uint32_t EXTI_Line; // 中断/事件线
     EXTIMode_TypeDef EXTI_Mode; // EXTI 模式
     EXTITrigger_TypeDef EXTI_Trigger; // 触发类型
     FunctionalState EXTI_LineCmd; // EXTI 使能
     } EXTI_InitTypeDef;
    
    1. EXTI_Line:EXTI中断/事件线选择,可选 EXTI0 至 EXTI19,可参考表 18-1 选择。
    2. EXTI_Mode:EXTI 模式选择,可选为产生中断(EXTI_Mode_Interrupt)或者产生事
      件(EXTI_Mode_Event)。
    3. EXTI_Trigger:EXTI 边沿触发事件,可选上升沿触发(EXTI_Trigger_Rising)、下
      降 沿 触 发 ( EXTI_Trigger_Falling) 或 者 上 升 沿 和 下 降 沿 都 触 发
      ( EXTI_Trigger_Rising_Falling)。
    4. EXTI_LineCmd:控制是否使能 EXTI 线,可选使能 EXTI 线(ENABLE)或禁用
      (DISABLE)。

    五、 外部中断控制实验
    中断在嵌入式应用中占有非常重要的地位,几乎每个控制器都有中断功能。中断对保证紧急事件得到第一时间处理是非常重要的。
    我们设计使用外接的按键来作为触发源,使得控制器产生中断,并在中断服务函数中实现控制 RGB 彩灯的任务。
    我们创建了两个文件:bsp_exti.c 和 bsp_exti.h 文件用来存放 EXTI驱动程序及相关宏定义,中断服务函数放在 stm32f10x_it.h 文件中。

    1. 编程要点
    1. 初始化用来产生中断的 GPIO;
    2. 初始化 EXTI;
    3. 配置 NVIC;
    4. 编写中断服务函数;
    1. 软件分析
      按键和 EXTI 宏定义
    1 //引脚定义
    2 #define KEY1_INT_GPIO_PORT GPIOA
    3 #define KEY1_INT_GPIO_CLK (RCC_APB2Periph_GPIOA\
    4 |RCC_APB2Periph_AFIO)
    5 #define KEY1_INT_GPIO_PIN GPIO_Pin_0
    6 #define KEY1_INT_EXTI_PORTSOURCE GPIO_PortSourceGPIOA
    7 #define KEY1_INT_EXTI_PINSOURCE GPIO_PinSource0
    8 #define KEY1_INT_EXTI_LINE EXTI_Line0
    9 #define KEY1_INT_EXTI_IRQ EXTI0_IRQn
    10 
    11 #define KEY1_IRQHandler EXTI0_IRQHandler
    12 
    13 
    14 #define KEY2_INT_GPIO_PORT GPIOC
    15 #define KEY2_INT_GPIO_CLK (RCC_APB2Periph_GPIOC\
    16 |RCC_APB2Periph_AFIO)
    17 #define KEY2_INT_GPIO_PIN GPIO_Pin_13
    18 #define KEY2_INT_EXTI_PORTSOURCE GPIO_PortSourceGPIOC
    19 #define KEY2_INT_EXTI_PINSOURCE GPIO_PinSource13
    20 #define KEY2_INT_EXTI_LINE EXTI_Line13
    21 #define KEY2_INT_EXTI_IRQ EXTI15_10_IRQn
    

    使用宏定义方法指定与硬件电路设计相关配置,这对于程序移植或升级非常有用的。
    在上面的宏定义中,我们除了开 GPIO的端口时钟外,我们还打开了 AFIO 的时钟,这是因为等下配置 EXTI信号源的时候需要用到 AFIO的外部中断控制寄存器 AFIO_EXTICRx,具体见《STM32F10X-中文参考手册》AFIO 寄存器描述。

    嵌套向量中断控制器 NVIC  配置
    1 static void NVIC_Configuration(void)
    2 {
    3 NVIC_InitTypeDef NVIC_InitStructure;
    4 
    5 /* 配置 NVIC 为优先级组 1 */
    6 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    7 
    8 /* 配置中断源:按键 1 */
    9 NVIC_InitStructure.NVIC_IRQChannel = KEY1_INT_EXTI_IRQ;
    10 /* 配置抢占优先级:1 */
    11 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    12 /* 配置子优先级:1 */
    13 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    14 /* 使能中断通道 */
    15 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    16 NVIC_Init(&NVIC_InitStructure);
    17 
    18 /* 配置中断源:按键 2,其他使用上面相关配置 */
    19 NVIC_InitStructure.NVIC_IRQChannel = KEY2_INT_EXTI_IRQ;
    20 NVIC_Init(&NVIC_InitStructure);
    21 }
    

    这里我们配置两个的中断软件优先级一样,如果出现了两个按键同时按下的情况,那怎么办,到底该执行哪一个中断?当两个中断的软件优先级一样的时候,中断来临时,具体先执行哪个中断服务函数由硬件的中断编号决定,编号越小,优先级越高。有关外设的硬件编号可查询《STM32F10X-中文参考手册》的中断和事件章节中的向量表,表中的位置编号即是每个外设的硬件中断优先级。当然,我们也可以把抢占优先级设置成一样,子优先级设置成不一样,这样就可以区别两个按键同时按下的情况,而不用硬件去对比硬件编号。

    EXTI 中断配置
    1 void EXTI_Key_Config(void)
    2 {
    3 GPIO_InitTypeDef GPIO_InitStructure;
    4 EXTI_InitTypeDef EXTI_InitStructure;
    5 
    6 /*开启按键 GPIO 口的时钟*/
    7 RCC_APB2PeriphClockCmd(KEY1_INT_GPIO_CLK,ENABLE);
    8 
    9 /* 配置 NVIC 中断*/
    10 NVIC_Configuration();
    11 
    12 /*--------------------------KEY1 配置---------------------*/
    13 /* 选择按键用到的 GPIO */
    14 GPIO_InitStructure.GPIO_Pin = KEY1_INT_GPIO_PIN;
    15 /* 配置为浮空输入 */
    16 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    17 GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStructure);
    18 
    19 /* 选择 EXTI 的信号源 */
    20 GPIO_EXTILineConfig(KEY1_INT_EXTI_PORTSOURCE, \
    21 KEY1_INT_EXTI_PINSOURCE);
    22 EXTI_InitStructure.EXTI_Line = KEY1_INT_EXTI_LINE;
    23 
    24 /* EXTI 为中断模式 */
    25 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    26 /* 上升沿中断 */
    27 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
    28 /* 使能中断 */
    29 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    30 EXTI_Init(&EXTI_InitStructure);
    31 
    32 /*--------------------------KEY2 配置------------------*/
    33 /* 选择按键用到的 GPIO */
    34 GPIO_InitStructure.GPIO_Pin = KEY2_INT_GPIO_PIN;
    35 /* 配置为浮空输入 */
    36 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    37 GPIO_Init(KEY2_INT_GPIO_PORT, &GPIO_InitStructure);
    38 
    39 /* 选择 EXTI 的信号源 */
    40 GPIO_EXTILineConfig(KEY2_INT_EXTI_PORTSOURCE, \
    41 KEY2_INT_EXTI_PINSOURCE);
    42 EXTI_InitStructure.EXTI_Line = KEY2_INT_EXTI_LINE;
    43 
    44 /* EXTI 为中断模式 */
    45 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    46 /* 下降沿中断 */
    47 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    48 /* 使能中断 */
    49 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    50 EXTI_Init(&EXTI_InitStructure);
    51 }
    

    首先,使用 GPIO_InitTypeDef和 EXTI_InitTypeDef结构体定义两个用于 GPIO和 EXTI初始化配置的变量,关于这两个结构体前面都已经做了详细的讲解。
    使用 GPIO之前必须开启 GPIO端口的时钟;用到 EXTI必须开启 AFIO 时钟。
    调用 NVIC_Configuration函数完成对按键 1、按键 2 优先级配置并使能中断通道。
    作为中断/事件输入线时需把 GPIO 配置为输入模式,具体为浮空输入,由外部电路完全决定引脚的状态。
    GPIO_EXTILineConfig 函数用来指定中断/事件线的输入源,它实际是设定外部中断配置寄存器的 AFIO_EXTICRx 值,该函数接收两个参数,第一个参数指定 GPIO 端口源,第二个参数为选择对应 GPIO 引脚源编号。
    我们的目的是产生中断,执行中断服务函数,EXTI 选择中断模式,按键 1 使用上升沿触发方式,并使能 EXTI线。
    按键 2 基本上采用与按键 1 相关参数配置,只是改为下降沿触发方式。
    两个按键的电路是一样的,可代码中我们设置按键 1 是上升沿中断,按键 2 是下降沿中断,有人就会问这是不是设置错了?实际上可以这么理解,按键 1 检测的是按键按下的状态,按键 2检测的是按键弹开的状态,那这样就解释的通了。

    EXTI 中断服务函数
    1 void KEY1_IRQHandler(void)
    2 {
    3 //确保是否产生了 EXTI Line 中断
    4 if (EXTI_GetITStatus(KEY1_INT_EXTI_LINE) != RESET) {
    5 // LED1 取反
    6 LED1_TOGGLE;
    7 //清除中断标志位
    8 EXTI_ClearITPendingBit(KEY1_INT_EXTI_LINE);
    9 }
    10 }
    11 
    12 void KEY2_IRQHandler(void)
    13 {
    14 //确保是否产生了 EXTI Line 中断
    15 if (EXTI_GetITStatus(KEY2_INT_EXTI_LINE) != RESET) {
    16 // LED2 取反
    17 LED2_TOGGLE;
    18 //清除中断标志位
    19 EXTI_ClearITPendingBit(KEY2_INT_EXTI_LINE);
    20 }
    21 }
    

    当中断发生时,对应的中断服务函数就会被执行,我们可以在中断服务函数实现一些控制。
    一般为确保中断确实发生,我们会在中断服务函数中调用中断标志位状态读取函数读取外设中断标志位并判断标志位状态。
    EXTI_GetITStatus 函数用来获取 EXTI 的中断标志位状态,如果 EXTI 线有中断发生函数返回“SET”否则返回“RESET”。实际上,EXTI_GetITStatus 函数是通过读取EXTI_PR寄存器值来判断 EXTI线状态的。
    按键 1的中断服务函数我们让 LED1翻转其状态,按键 2的中断服务函数我们让 LED2翻转其状态。执行任务后需要调用 EXTI_ClearITPendingBit函数清除 EXTI线的中断标志位。

    主函数
    1 int main(void)
    2 {
    3 /* LED 端口初始化 */
    4 LED_GPIO_Config();
    5 
    6 /* 初始化 EXTI 中断,按下按键会触发中断,
    7 * 触发中断会进入 stm32f10x_it.c 文件中的函数
    8 * KEY1_IRQHandler 和 KEY2_IRQHandler,处理中断,反转 LED 灯。
    9 */
    10 EXTI_Key_Config();
    11 
    12 /* 等待中断,由于使用中断方式,CPU 不用轮询按键 */
    13 while (1) {
    14 }
    15 }
    

    引用《STM32库开发实战指南》

    展开全文
  • 外部 中断/事件 控制器EXTI EXTI: External interrupt / event controller 对应GPIO 有20根,GPIO端口16根 通过外部中断配置寄存器配置。 EXIT_IMR 大开关 EXIT_SEIER 小开关 中断框图: EXTI结构体: ...

    外部 中断/事件 控制器EXTI
    EXTI: External interrupt / event controller
    对应GPIO 有20根,GPIO端口16根

    在这里插入图片描述
    通过外部中断配置寄存器配置。
    EXTI寄存器
    EXIT_IMR 大开关
    EXIT_SEIER 小开关

    中断框图:
    在这里插入图片描述
    EXTI结构体:

    typedef struct
    {
      uint32_t EXTI_Line;               /*!< Specifies the EXTI lines to be enabled or disabled.
                                             This parameter can be any combination of @ref EXTI_Lines
                                             20根线,用于选择哪个位 */
       
      EXTIMode_TypeDef EXTI_Mode;       /*!< Specifies the mode for the EXTI lines.
                                             This parameter can be a value of @ref EXTIMode_TypeDef
                                             模式 1中断 2触发 */
    
      EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines.
                                             This parameter can be a value of @ref EXTIMode_TypeDef
                                             上升/下降/上升加下降 */
    
      FunctionalState EXTI_LineCmd;     /*!< Specifies the new state of the selected EXTI lines.
                                             This parameter can be set either to ENABLE or DISABLE */ 
    }EXTI_InitTypeDef;
    
    

    理论部分结束。下面是实验了。

    展开全文
  • 请问C语言中#define EXTI ((EXTI_TypeDef *) EXTI_BASE)这样的语句,EXTI_BASE前面的EXTI_TypeDef *为什么还要带一个括号呢?这一句又是什么意思呢,谢谢
  • EXTI中断使用例子

    2018-04-28 22:16:52
    一个STM32开发中EXTI中断使用的简单例子,实现了一个简单的经典的按键触发中断
  • EXTI_ClearITPendingBit与EXTI_ClearFlag区别

    千次阅读 2018-07-02 19:37:37
    学习外部中断的时候正点原子视频中清除标志用的是EXTI_ClearITPendingBit(),但是还有个EXTI_ClearFlag()函数的clearflag看起来更像清除标志位,但是原子哥没有提。手册上说的是两个不同功能EXTI_ClearFlag:清除EXTI...

    学习外部中断的时候正点原子视频中清除标志用的是EXTI_ClearITPendingBit(),但是还有个EXTI_ClearFlag()函数的clearflag看起来更像清除标志位,但是原子哥没有提。

    手册上说的是两个不同功能

    EXTI_ClearFlag:清除EXTI线路挂起标志位

    EXTI_ClearITPendingBit:清除EXTI线路挂起位


    试了试发现效果一样,跳到底下发现程序一模一样.

    void EXTI_ClearITPendingBit(uint32_t EXTI_Line)
    {
      /* Check the parameters */
      assert_param(IS_EXTI_LINE(EXTI_Line));
      
      EXTI->PR = EXTI_Line;
    }	
    void EXTI_ClearFlag(uint32_t EXTI_Line)
    {
      /* Check the parameters */
      assert_param(IS_EXTI_LINE(EXTI_Line));
      
      EXTI->PR = EXTI_Line;
    }

    那么。。。

    为什么要有两个一模一样的程序???



    中断老库

    展开全文
  • EXTI 外部中断

    2021-05-25 19:04:56
    EXTI线0~15:对应外部IO口的输入中断。 EXTI线16:连接到PVD输出。 EXTI线17:连接到RTC闹钟事件。 EXTI线18:连接到USB OTG FS唤醒事件。 EXTI线19:连接到以太网唤醒事件。 EXTI线20:连接到USB OTG HS(在FS中配置...
  • STM32库函数EXTI_GetFlagStatus和EXTI_GetITStatus的区别

    万次阅读 多人点赞 2016-05-31 23:36:40
    在使用 STM32 的外部中断功能时,我们经常需要确认是否真的产生了外部中断,查看库函数,我们发现了这两个函数:EXTI_GetFlagStatus 和 EXTI_GetITStatus 。原型如下:FlagStatus EXTI_GetFlagStatus ( uint32_t ...
  • 首先贴上两个函数代码: /** * @brief Checks whether the specified EXTI line flag is set or not... * @param EXTI_Line: specifies the EXTI line flag to check. * This parameter can be: * @arg EXTI_Li...
  • EXTI中断理解

    2020-06-09 23:05:44
    1.STM32的每个I/O口都可以用作EXTI中断事件 2.支持多达19个中断/事件请求 3.EXTI有两大功能:产生中断(软件),产生事件(硬件)
  • 电子-exti.c

    2019-09-05 21:33:16
    电子-exti.c,单片机/嵌入式STM32-F0/F1/F2
  • 电子-exti.h

    2019-09-05 21:22:40
    电子-exti.h,单片机/嵌入式STM32-F0/F1/F2
  • EXTI中断程序实例

    千次阅读 2015-04-19 16:45:50
    EXTI中断程序实例
  • stm32exti.rar

    2020-04-19 21:28:31
    关于实现STM32F10x的中断程序控制LED灯亮灭,其中选择使用GPIOA管脚Pin_0端口进行...初始状态灯熄灭,当按下按键,检测跳转到EXTI0_IRQHandler函数中执行中断控制,GPIOA取反并延时,清除标志位,等待下一次按键按下。
  • 互联网的广大网友,大家早上中午晚上好、EXTI、、、故名思义、、EX表外,出、、I表示Intrrupt、、所以合起来就是外部中断、、、说到这、、我觉得我最近的六级水平(背单词)又进了一步,稍微自夸了下下、、英语重要...
  • STM32F103 EXTI配置问题

    2015-11-06 19:53:51
    EXTI是外部中断/事件控制器,EXTI控制器可以产生高达19个软件事件/中断请求。在这个文件中主要是进行各种初始化配置,包括GPIO配置、EXTI配置、系统时钟配置等。
  • 外部中断EXTI

    2021-02-23 10:20:54
    STM32外部中断-EXTI10_15 中断线挂起无法清除问题 问题描述:按键为PD14,输入模式,外部中断,进中断服务函数处理完后仍再次进入中断服务函数,无法退出。中断服务函数已加入清除中断线函数。 检查引脚配置,输入...
  • stm32-407控制外部中断exti
  • 重新加深STM32F103系列EXTI外部中断,结合“正点原子”相关教材和《STM32中文参考手册》,写了这篇关于EXTI的总结文档,防止自己忘记后有迹可查。
  • TIMER_KeyBoard_EXTI.rar

    2021-03-12 15:48:54
    从官方04_TIMER_KeyBoard_EXTI例程改造的,可当作模版,直接修改或者添加自己的功能。
  • 嵌入式系统课件,EXTI原理及应用
  • EXTI(自用笔记)

    2021-05-16 17:39:09
    中断之EXTI(补充) 中断的实现不仅需要NVIC的配置,还需要配置EXTI。以下以通过上升沿判定的按键输入实验为例来实现中断举例:(该例子中以PE2为例) 配置EXTIX_Init()初始化函数(exti.c文件) void EXTIX_Init(void...
  • EXTI外部按键中断实验 前面我们介绍了STM32 的IO 口作为输出功能使用并介绍了我们以按键的输入扫描实 验这一节我们将向大家介绍如何使用STM32的IO 口作为EXTI外部中断的输入功能我 们以按键的输入为例讲解通过本节的...
  • EXTI中断程序编写

    2018-04-22 15:15:58
    EXTI中断程序编写总结 - EXTI中断主要涉及到AFIO、EXTI、NVIC以及GPIO这几个寄存器 EXTI中断的具体编写步骤: 先初始化与EXTI中断相关的GPIO寄存器,即欲将哪个GPIO端口设置为中断响应 初始化EXTI寄存器,...
  • https://blog.csdn.net/ysmz4/article/details/31751013 ... EXTI_GetFlagStatus 与 EXTI_GetITStatus,一个是获取状态的,一个是获取中断的。 EXTI_GetFlagStatus只是纯粹读取中断标志位的状态,但是...
  • 38-STM32F429_EXTI.7z

    2021-07-27 15:20:23
    38-STM32F429_EXTI.7z

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,770
精华内容 3,508
关键字:

EXTI