stm32f407如何配置外部中断

发布者:jingyun最新更新时间:2024-09-11 来源: elecfans关键字:stm32f407  配置  外部中断 手机看文章 扫描二维码
随时随地手机看文章

这几天又重新学了stm32f4,遇到了一个外部配置的实验,实验内容仅作简单的外部中断,读者只要搞懂其中的原理,稍微复杂的中断就能很好解决。


实验内容:按键KEY0按下,触发外部中断,中断函数点亮LED0


现将实验笔记做一个分享。

外部中断需要如下几步(此处我们以正点原子探索者开发板为例)

1)初始化LED灯,按键的GPIO

2)配置NVIC

3)将按键 GPIO 连接到 EXTI 源输入

4)配置按键 EXTI 中断/事件线

5) 编写 EXTI 中断服务函数

正点原子KEY0对应IO口为PE4,LED0对应IO口为PF9.

1)初始化LED灯,按键的GPIO

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOE, ENABLE);

//同时初始化两个IO口

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;

GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_25MHz;

GPIO_Init(GPIOF,&GPIO_InitStructure);

//LED0配置:输出模式,上拉模式(此处不用上拉也行),推挽输出,25MHz

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;

GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_25MHz;

GPIO_Init(GPIOE, &GPIO_InitStructure);

///KEY0配置:输入模式,上拉模式,25MHz

2)配置NVIC

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel=EXTI4_IRQn;//PE4选择中断线EXTI_IRQn

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init( &NVIC_InitStructure);

3)将按键 GPIO 连接到 EXTI 源输入

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource4);

4)配置按键 EXTI 中断/事件线

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

//外部中断一定要配置时钟SYSCFG

EXTI_InitTypeDef EXTI_InitStructure;

EXTI_InitStructure.EXTI_Line=EXTI_Line4;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init(& EXTI_InitStructure);

//EXTI_Line的参数在stm32f4xx_exti.h可以找到,不能直接写0x04,此处容易出错。

5) 编写 EXTI 中断服务函数

void EXTI4_IRQHandler(void)

{

if(EXTI_GetITStatus(EXTI_Line4) != RESET)

{

GPIO_SetBits(GPIOF,GPIO_Pin_9);

}

EXTI_ClearITPendingBit(EXTI_Line4);

}

最后只需要在main函数里写

int main(void)

{

Exit_Key_Config();

while(1)

{ }

};


关键字:stm32f407  配置  外部中断 引用地址:stm32f407如何配置外部中断

上一篇:STM32与SD卡通信各层分析
下一篇:stm32任务调度和管理

推荐阅读最新更新时间:2026-02-17 10:24

关于STM32F407的NVIC、EXTI相关入门知识
NVIC与EXTI关系 EXTI是ST公司在其STM32产品上扩展的外中断控制。它负责管理映射到GPIO引脚上的外中断和片内几个集成外设的中断(PVD,RTC alarm,USB wakeup,ethernet wakeup),以及软件中断。其输出最终被映射到NVIC的相应通道。因此,配置EXTI中断的过程必然包含对NVIC的配置,例如下面配置EXTI0的过程,就要首先配置EXTI控制器(使能相应的中断线,选择中断/事件模式,触发边沿极性),然后再配置NVIC控制器(EXTI0映射在NVIC上的通道号,中断优先级,中断屏蔽状态):------来源于STM32中EXTI(外部中断)和NVIC(嵌套向量中断)的关系 - 21ic电子网
[单片机]
关于<font color='red'>STM32F407</font>的NVIC、<font color='red'>EXTI</font>相关入门知识
stm32f407外部中断实现按键中断方式
.外部中断 STM32F4的每个IO都可以作为外部中断的中断输入口,这点也是STM32F4的强大之处。STM32F407的中断控制器支持22个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。 STM32F407的22个外部中断为: EXTI线0~15:对应外部IO口的输入中断。 EXTI线16:连接到PVD输出。 EXTI线17:连接到RTC闹钟事件。 EXTI线18:连接到USB OTG FS唤醒事件。 EXTI线19:连接到以太网唤醒事件。 EXTI线20:连接到USB OTG HS(在FS中配置)唤醒事件。 EXTI线21:连接到RTC入侵和时间戳事件。
[单片机]
【<font color='red'>stm32f407</font>】<font color='red'>外部中断</font>实现按键中断方式
stm32f407外部中断实现按键中断方式
一.外部中断 STM32F4的每个IO都可以作为外部中断的中断输入口,这点也是STM32F4的强大之处。STM32F407的中断控制器支持22个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。 STM32F407的22个外部中断为: EXTI线0~15:对应外部IO口的输入中断。 EXTI线16:连接到PVD输出。 EXTI线17:连接到RTC闹钟事件。 EXTI线18:连接到USB OTG FS唤醒事件。 EXTI线19:连接到以太网唤醒事件。 EXTI线20:连接到USB OTG HS(在FS中配置)唤醒事件。 EXTI线21:连接到RTC入侵和时间戳事件。 EXTI线22:连接到RTC唤醒事件
[单片机]
STM32F407外部中断设置
比如要是使用GPC3作为中断源,上升沿触发 外部中断必须配置好EXTI和NVIC 使用以下函数打开SYSCFG的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE) GPIO设置如下 void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* GPIOF Periph clock enable */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_S
[单片机]
stm32F407EXTI外部中断
要点:外部中断必须配置好EXTI和NVIC,因为要用的IO口做中断源,故IO的复用功能必须使能,F4的与其他的有些不同,它的外部中断复用功能是由SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOx,GPIO_PinSourcex); 进行配置的,当然,也要打开SYSCFG的时钟。 最让初学者头疼的就是中断服务函数的入口问题,一般的中断函数都会在stm32f4xx_it.h中声明,但是stm32f4xx_it.h只声明了一部分,自己需要的函数却没有定义,自己找了好久也没有找到,其实所有的中断函数入口都定义在了启动文件startup_stm32f4xx.s中。 /********************
[单片机]
STM32F407 基本定时器配置输出PWM方波
介绍STM32F407定时器PWM波形输出配置方式。 通过逻辑分析采集波形数据进行可视化显示对比。 【1】定时器PWM功能介绍 STM32F4 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达4路的PWM输出! 【2】PWM波形输出通道介绍 ** 定时器3的硬件PWM通道:PA6 PA7 PB0 PB1** 下面截图是介绍定时器3通道的复用IO口模式配置方式 【3】配置PWM波形输出代码示例 在工程中增加pwm.c文件,写入以下代码 #include pwm.h
[单片机]
<font color='red'>STM32F407</font> 基本定时器<font color='red'>配置</font>输出PWM方波
STM32F407 GPIO口输入配置配置步骤
介绍 STM32 F407新建 寄存器 工程流程,介绍输入模式的配置方式,以按键为例完成按键输入 检测 。 【1】F407建工程所需依赖文件 【2】新建工程 【3】分析KEY按键 硬件 原理图 【4】编写KEY按键驱动代码 查看数据手册: key.c文件代码如下: #include key.h /* 函数功能:按键初始化配置 硬件连接: KEY0 --- PE4 按下为低电平 KEY1 --- PE3 按下为低电平 KEY2 --- PE2 按下为低电平 KEY_UP-- PA0 按下为高电平 */ void KEY_Init(void)
[单片机]
<font color='red'>STM32F407</font> GPIO口输入<font color='red'>配置</font><font color='red'>配置</font>步骤
STM32F407入门开发: 配置定时器输出PWM方波
第一章 定时器PWM功能介绍 STM32F407的定时器的 TIM6 和 TIM7 是普通定时器,除此之外,其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达4路的PWM输出;在开发四轴无人机、机器人等需要控制大量电机的产品里运用起来非常方便。 第二章 PWM波形输出通道介绍 定时器3的硬件PWM通道:PA6 PA7 PB0 PB1 下面截图是介绍定时器3通道的复用IO口模式配置方式 第三章 配置PWM波形输出代码示例 3.1 在工程中增加pwm.c文件,写入以下代码 #include pwm.h
[单片机]
<font color='red'>STM32F407</font>入门开发: <font color='red'>配置</font>定时器输出PWM方波
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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