STM32F4 EXTI外部中断(一)

发布者:橙子1234最新更新时间:2022-06-14 来源: eefocus关键字:STM32F4  EXTI  外部中断 手机看文章 扫描二维码
随时随地手机看文章

STM32中共有23根中断总线

image.png

image.png

外部中断配置步骤

1.使能IO时钟,初始化IO为输入

详见[https://blog.csdn.net/conjurer_yft/article/details/106963994]


2.开启SYSCFG时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG时钟


3.设置IO口与中断线映射关系

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);

参数1:端口组 EXTI_PortSourceGPIOA,

EXTI_PortSourceGPIOB,

EXTI_PortSourceGPIOC ~~~

参数2:中断线:EXTI_PinSource0 ~ EXTI_PinSource15


4.初始化中断

1.定义中断结构体

EXTI_InitTypeDef EXTI_InitStructure;


2.配置中断线标号

EXTI_InitStructure.EXTI_Line=中断线号;

中断线号:取值范围为EXTI_Line0~EXTI_Line15 //外部中断线0~15


3.配置中断模式

EXTI_InitStructure.EXTI_Mode = 中断模式;

中断模式:

EXTI_Mode_Interrupt //设置EXIT为中断请求

EXTI_Mode_Event //设置EXIT为事件请求


4.配置触发方式

EXTI_InitStructure.EXTI_Trigger =触发方式;

触发方式:

EXTI_Trigger_Falling //下降沿触发

EXTI_Trigger_Rising //上升沿触发

EXTI_Trigger_Rising_ Falling //上升沿和下降沿触发


5.使能中断线

EXTI_InitStructure.EXTI_LineCmd = ENABLE;


6.中断初始化

EXTI_Init(&EXTI_InitStructure); //初始化外设EXTI寄存器


5.配置中断分组NVIC

配置优先级分组

|      优先级分组       |   主优先级(抢占优先级)     |  子优先级 (响应优先级) |      描述         |

--------------------------------------------------------------------------

| NVIC_PriorityGroup_0 |      0         |     0-15   |  主-0bit,子-4bit |

| NVIC_PriorityGroup_1 |      0-1       |     0-7    |  主-1bit,子-3bit |

| NVIC_PriorityGroup_2 |      0-3       |     0-3    |  主-2bit,子-2bit |

| NVIC_PriorityGroup_3 |      0-7       |     0-1    |  主-3bit,子-1bit |

| NVIC_PriorityGroup_4 |      0-15      |     0      |  主-4bit,子-0bit |

--------------------------------------------------------------------------*/


配置优先级分组

NVIC_PriorityGroupConfig(优先级分组);


1.定义NVIC结构体

NVIC_InitTypeDef NVIC_InitStructure;


2.配置中断通道

NVIC_InitStructure.NVIC_IRQChannel=中断通道;

中断通道:

EXTI0_IRQn

EXTI1_IRQn

EXTI2_IRQn

EXTI3_IRQn

EXTI9_5IRQn

EXTI5_10IRQn


3.设置抢占优先级

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 抢占优先级


4.设置响应优先级

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 响应优先级


5.使能外部中断通道

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;


6.初始化

NVIC_Init(&NVIC_InitStructure);


6.编写中断函数

STM32F4的IO口外部中断函数只有7个,分别为:

EXPORT EXTI0_IRQHandler

EXPORT EXTI1_IRQHandler

EXPORT EXTI2_IRQHandler

EXPORT EXTI3_IRQHandler

EXPORT EXTI4_IRQHandler

EXPORT EXTI9_5_IRQHandler

EXPORT EXTI15_10_IRQHandler

中断线0-4每个中断线对应一个中断函数,中断线5-9共用中断函数EXTI9_5_IRQHandler,中断线10-15共用中断函数EXTI15_10_IRQHandler


编写中断函数

void 外部中断函数(void)

{

}


1. 判断中断发生

EXTI_GetITStatus(中断线)!=RESET


2. 清除中断标志位

EXTI_ClearITPendingBit(中断线);


中断线号:取值范围为EXTI_Line0~EXTI_Line15 //外部中断线0~15


常用外部中断例程

void EXTI15_10_IRQHandler(void)

{

if (EXTI_GetITStatus(EXTI_Line13) != RESET)

{

EXTI_ClearITPendingBit(EXTI_Line13);

}

}

关键字:STM32F4  EXTI  外部中断 引用地址:STM32F4 EXTI外部中断(一)

上一篇:STM32F4UART串口配置(一)
下一篇:STM32F4 GPIO(一)

推荐阅读最新更新时间:2024-11-08 11:02

S3C6410裸机 - 外部中断程序
一、外部中断分组: 外部中断组0 GROUP0 GPN0--GPN15 GPL8--GPL14 GPM0--GPM4 外部中断组1 GROUP1 GPA0--GPA7 GPB0--GPB6 外部中断组2 GROUP2 GPC0--GPC7 外部中断组3 GROUP3 GPD0--GPD5 外部中断组4 GROUP4 GPF0--GPF14 外部中断组5 GROUP5 GPG0--GPG7 外部中断组6 GROUP6 GPH0--GPH9 外部中断组7 GROUP7 GPO0--GPO15 外部中断组8 GROUP8 GPP0--GPP14 外部中断组9 GROUP9 GPQ0--GPQ9
[单片机]
STM32F4——TFT-LCD原理及FSMC
一、简介: TFT-LCD即薄膜晶体管液晶显示器,依据其尺寸、分辨率和驱动芯片的不同有很多分类,下边会依据2.8寸320X240分辨率以ILI9341芯片驱动的TFT-LCD做相关介绍。 二、接口: 模块采用16位并方式与外部连接,其相关接口图及信号线功能如下: CS:TFTLCD片选信号。WR:向TFTLCD写数据。RD:从TFTLCD读取数据。D :16位数据线。RS:命令/数据标示(0,读写命令;1,读写数据)。 三、驱动时序: 对于写时序:CS拉低做片选,RS表示是要写数据还是要写命令,在WR信号线的上升沿获取数据线D 上的数据,在写时序上RD信号线总是处于高电平。对于读时序同理。 四、驱动流程:
[单片机]
AVR使用范例--AVR外部中断范例
系统在正常运行主程序时,如果突然有一个重要的任务要马上处理,那么系统就要保存现在的工作,然后再去处理这个任务,执行这个重要任务完毕以后再返回原来的主程序继续运行,这就是中断。 主程序一旦进入中断服务程序,那么AVR芯片将自动的关闭全局中断,在这个期间不再执行其它的中断请求,直到中断程序结束以后芯片才自动的重新开放全局中断。(注意,在这个期间某些中断请求可能会被丢弃,某些请求会留下中断请求标致,一旦当前的中断执行完毕,这个有中断标致的请求就有可能马上得到响应,如INT0的下降沿触发就会留下中断请求标致,而低电平触发就不会流下中断请求标致)。如果你想在执行中断服务程序时响应另外一个更重要的中断,那么就要在中断服务程序中加入一条打开全局中
[单片机]
AVR使用范例--AVR<font color='red'>外部中断</font>范例
STM32F429的USB有坑?
最近某项目需要用到USB与CAN: 拿到这样的需求,我们当然是先得保证通讯正常。于是我找了一个USB例程与一个CAN例程,分别调试验证。 经过几番折腾已经保证了USB与上位机能正常通讯了,也能保证了CAN的正常收发(拿了两块开发板做验证)。 两头都没有问题了,再加上一些数据处理就差不多完成了。USB与CAN我都是第一次用,没想到那么顺利,美滋滋,正准备放松的时候,问题就来了。这是一个整体的东西,最终都要把这两部分集合起来吧。 我把CAN工程里关于CAN的部分移到USB工程里,这时候CAN竟然用不了了。这时候我就开始在怀疑自己是不是手贱误删了哪里了,于是重新来一遍,发现还是不行。 查了代码很久也没找出什么错误了,
[单片机]
<font color='red'>STM32F4</font>29的USB有坑?
MSP430G2553(一)IO外部中断说明与实例
这一篇文章将说明MSP430G2553的IO中断配置,整个P1的IO都可以配置IO中断,但中断处理函数只有一个,MSP430和大多数MCU一样提供上升沿、下降沿选择。 在Launchpad上有按键S2,接在P1.3口,当按下后P1.3将接入高电平,从而触发中断。 所有寄存器的具体名称和地址,可以查看M430G2553 datasheet 第 21页中对于P1的寄存器定义 在实例代码中,配置了P1.3和P1.6的LED灯,当按下P1.3的按键产生中断,LED灯将切换点亮 1.按键的中断配置 要配置按键中断,需要先设置P1.3口为输入,并且设置上拉电阻以保障稳定性, P1DIR &= ~BIT3;//设置P1.3为输入 P1REN
[单片机]
STM32F407 串口配置步骤
介绍STM32F407串口配置步骤,完成串口的数据发送与接收、实现中断接收,支持printf重定向。 STM32F407 串口配置说明 STM32F4 的串口资源相当丰富的,功能也相当强劲,STM32F407ZGT6 最多可提供 6 路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持 LIN、 支持调制解调器操作、 智能卡协议和 IrDA SIR ENDEC 规范、具有 DMA 等。 【1】串口硬件引脚分析 【2】串口复用引脚介绍 串口寄存器介绍在手册第26章 GPIO口复用功能引脚配置 F407串口对应的引脚 配置复用功能的寄存器 串口时钟频率配置分析 【3】串口1配置示例
[单片机]
<font color='red'>STM32F4</font>07 串口配置步骤
stm32f407】窗口看门狗 wwdog
一.窗口看门狗 窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位(WWDG- CR的第六位)变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口配置寄存器(WWDG- CFR)数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。如图: T 就是WWDG_CR的低七位,W 即是WWDG- CFR的低七位。T 就是窗口看门狗的计数器,而W 则是窗口看门狗的上窗口,下窗口值是固定的(0X40)。当窗口看门狗
[单片机]
【<font color='red'>stm32f4</font>07】窗口看门狗 wwdog
stm32f407之基本定时器TIM6&TIM7(操作寄存器)
基本定时器TIM6和TIM7包括一个由可编程分频器驱动的16位自动重载计数器。它可以用作普通的定时器,也可以用来驱动DAC。这两个定时器是完全独立的,不共享任何资源。更多时候是与DAC平配合使用。 作为定时器的配置步骤: 1.设置中断优先级分组(如果之前没有设置),这个最好一个程序里只在开头设置一次。 2.使能相关时钟。 3.设置分频。 4.清空计数器的值。 5.设置自动重装寄存器的值。 6.是否允许中断。 7.如果允许中断,设置中断优先级,使能中断。 8.使能计数器。 程序: /************************************ 标题:定时器TIM7
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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