Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >STM32F407 外部中断配置步骤

STM32F407 外部中断配置步骤

作者头像
DS小龙哥
发布于 2023-07-08 12:08:58
发布于 2023-07-08 12:08:58
55100
代码可运行
举报
运行总次数:0
代码可运行

介绍STM32F407外部中断配置步骤,以按键为例,实现外部中断配置,使用按键触发中断进行LED灯控制。

【1】外部中断相关知识介绍

CM4 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。但 STM32F4 并没有使用 CM4 内核的全部东西,而是只用了它的一部分。

STM32F40xx/STM32F41xx 总共有 92 个中断, STM32F42xx/STM32F43xx 则总共有 96 个中断,以下仅以 STM32F40xx/41xx 为例讲解。

STM32F40xx/STM32F41xx 的 92 个中断里面, 包括 10 个内核中断和 82 个可屏蔽中断,具有 16 级可编程的中断优先级, 而我们常用的就是这 82 个可屏蔽中断。

【2】外部中断示例代码

exti.c代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "exti.h"

/*
函数功能:按键外部中断初始化
硬件连接:
KEY0 --->PE4  按下为低电平
KEY1 --->PE3  按下为低电平
KEY2 --->PE2  按下为低电平
KEY_UP-->PA0  按下为高电平
*/
void KEY_EXTI_Init(void)
{
		/*1. 开启SYSCFG时钟 */
		RCC->APB2ENR|=1<<14;
		
	  /*2. 开放来自线x上的中断请求*/
	  EXTI->IMR|=1<<0; //中断线0
	  EXTI->IMR|=1<<2; //中断线2
	  EXTI->IMR|=1<<3; //中断线3
	  EXTI->IMR|=1<<4; //中断线4
	
	  /*3. 配置中断线触发边沿*/
	  EXTI->RTSR|=1<<0; //上升沿
	  EXTI->FTSR|=1<<0; //下降沿
	  
		EXTI->RTSR|=1<<2; //上升沿
	  EXTI->FTSR|=1<<2; //下降沿
	 
		EXTI->RTSR|=1<<3; //上升沿
	  EXTI->FTSR|=1<<3; //下降沿
	
	  EXTI->RTSR|=1<<4; //上升沿
	  EXTI->FTSR|=1<<4; //下降沿
	  
	  /*4. 配置产生中断的对应IO口*/
	  SYSCFG->EXTICR[0]&=~(0xf<<0*4);
	  SYSCFG->EXTICR[0]|=0x0<<0*4;
	  
		SYSCFG->EXTICR[0]&=~(0xf<<2*4);
	  SYSCFG->EXTICR[0]|=0x4<<2*4;
		
		SYSCFG->EXTICR[0]&=~(0xf<<3*4);
	  SYSCFG->EXTICR[0]|=0x4<<3*4;
		
		SYSCFG->EXTICR[1]&=~(0xf<<0*4);
	  SYSCFG->EXTICR[1]|=0x4<<0*4;
		
	  /*5. 配置中断优先级*/
	  SetNVICPriorityGrouping(EXTI0_IRQn,2,2);
		SetNVICPriorityGrouping(EXTI2_IRQn,2,2);
		SetNVICPriorityGrouping(EXTI3_IRQn,2,2);
		SetNVICPriorityGrouping(EXTI4_IRQn,2,2);
}	

/*
功 能:外部中断线0中断服务函数
*/

void EXTI0_IRQHandler(void)
{
	 DelayMs(10);
	 if(KEY_UP)
	 {
			LED0=!LED0;
			LED1=!LED1;
			printf("KEY_UP\r\n");
	 }
	 EXTI->PR|=1<<0; //清除中断标志位
}

/*
功 能:外部中断线2中断服务函数
*/
void EXTI2_IRQHandler(void)
{
	 DelayMs(10);
	 if(KEY2==0)
	 {
			LED0=!LED0;
			LED1=!LED1;
			printf("KEY2\r\n");
	 }
	 EXTI->PR|=1<<2; //清除中断标志位
}

/*
功 能:外部中断线3中断服务函数
*/
void EXTI3_IRQHandler(void)
{
	 DelayMs(10);
	 if(KEY1==0)
	 {
			LED0=!LED0;
			LED1=!LED1;
		  printf("KEY1\r\n");
	 }
	 EXTI->PR|=1<<3; //清除中断标志位
}


/*
功 能:外部中断线4中断服务函数
*/
void EXTI4_IRQHandler(void)
{
	 DelayMs(10);
	 if(KEY0==0)
	 {
			LED0=!LED0;
			LED1=!LED1;
		  printf("KEY0\r\n");
	 }
	 EXTI->PR|=1<<4; //清除中断标志位
}

main.c代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "stm32f4xx.h" // Device header
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include "sys.h"
#include "exti.h"


int main(void)
{
		LED_Init();
		KEY_Init();
		USART1_Init(84,115200);
		KEY_EXTI_Init();
		while(1)
		{
				
		}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
STM32F407实现NEC协议红外线解码
NEC红外线协议是一种常用的红外线通信协议,广泛应用于消费电子产品中,如电视、DVD播放器、空调遥控器等。该协议定义了红外线通信的物理层和数据链路层规范,以实现可靠的红外线数据传输。
DS小龙哥
2023/07/08
1.1K1
STM32F407实现NEC协议红外线解码
(十四)STM32——外部中断(EXTI)
目录 学习目标 内容 介绍 配置 代码 运行结果 总结  ---- 学习目标         本节内容我们将介绍一下外部中断,STM32F4 的每个 IO 都可以作为外部 中断的中断输入口,这点也是 STM32F4 的强大之处。本节我们将使用 STM32F4 的 IO 口作为外部中断输入,实现独立按键的外部中断功能。和独立按键类似,只不过是用中断完成的。 内容 介绍         STM32F407 的中断控制器支持 22 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏
小点点
2022/12/12
1.2K0
(十四)STM32——外部中断(EXTI)
STM32F0单片机快速入门五 GPIO中断
我们从一个例程看一下,如何用一个GPIO引脚来触发中断,来控制另一个引脚的翻转去控制LED指示灯。
用户2366192
2021/05/31
1K0
STM32中断看这一篇就够了
参考资料:《STM32F10X-中文参考手册》中断和事件章节 《野火STM32手册》
秋名山码神
2023/11/17
3K0
STM32中断看这一篇就够了
【STM32】EXTI---外部中断/事件控制器
开发板:stm32f407VET6 开发环境:keil5 MDK 一、EXTI 简介 外部中断/事件控制器(EXTI)管理了控制器的 23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以
AXYZdong
2020/10/29
1.4K0
【STM32】EXTI---外部中断/事件控制器
STM32的外部中断(以按键为例)
外部中断一般用于接收外部特殊电平,比如红外线解码、倒车雷达(超声波)等其他外部信号,STM32的每个GPIO口都支持中断功能,上本文基于按键讲述外部中断功能。
皓琦
2023/12/26
2.8K0
STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)
学单片机的,相信对中断的概念都已经了如指掌了,中断具体是什么我在这里也就不再详细说明,不懂的上网找找也一大堆。那么在介绍实验之前我先跟大家简单讲讲STM32当中的NVIC(嵌套向量中断控制器)
全栈程序员站长
2022/09/05
6.4K2
STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)
(24)STM32——待机唤醒(低功耗)笔记
        这三种模式的功耗是逐渐降低的,特别是待机模式,功耗特别低,最低只需要 2.2uA 左右的电流。停机模式是次低功耗的,其典型的电流消耗在 350uA 左右。最后就是睡眠模式了。根据最低电源消耗,最快启动时间和可用的唤醒源等条件,选择一种最佳的低功耗模式。
小点点
2022/12/12
1.7K0
(24)STM32——待机唤醒(低功耗)笔记
STM32定时器与中断整理
F429 在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常和外部中断。
小锋学长生活大爆炸
2020/08/13
1.2K0
STM32定时器与中断整理
STM32入门开发: NEC红外线协议解码(超低成本无线传输方案)
红外线传输协议: NEC协议---38KHZ载波:。NEC协议是红外遥控协议中常见的一种。
DS小龙哥
2022/01/12
2K0
STM32入门开发: NEC红外线协议解码(超低成本无线传输方案)
STM32F407 基本定时器使用
介绍STM32F407基本定时器的配置方法,分别介绍轮询方式、中断方式使用定时器完成定时。
DS小龙哥
2023/07/08
5750
STM32F407 基本定时器使用
【STM32】HAL库 STM32CubeMX教程三—-外部中断(HAL库GPIO讲解)
上一节我们讲解了STM32CubeMX的基本使用和工程的配置,那么这一节我们正式来学习CubeMX配置STM32的各个外设功能了
全栈程序员站长
2022/06/30
2.3K0
【STM32】HAL库 STM32CubeMX教程三—-外部中断(HAL库GPIO讲解)
STM32F407 GPIO口输入配置配置步骤
介绍STM32F407新建寄存器工程流程,介绍输入模式的配置方式,以按键为例完成按键输入检测。
DS小龙哥
2023/07/08
4010
STM32F407 GPIO口输入配置配置步骤
中断-NVIC与EXTI外设详解(超全面)
NVIC :嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能。
全栈程序员站长
2022/08/24
2.1K0
中断-NVIC与EXTI外设详解(超全面)
STM32F407 位带配置步骤
介绍STM32F407位带操作方法,设置寄存器的偏移量,实现按GPIO口指定位进行读写操作,方便编程。
DS小龙哥
2023/07/08
3060
STM32F407 位带配置步骤
一小时彻底掌握stm32中断。
在STM32中执行中断主要分三部分: ==1.配置NVIC_Config()函数 2.配置EXTI_Config()函数 3.编写中断服务函数== (注:本文章所用代码为中断按键代码,实现了按键进入中断从而控制LED亮灭)了解10904更多92304加
7537367
2020/07/31
2.1K0
GPIO—按键中断
前面“第10章 基础重点—中断系统”介绍了STM32的中断和中断优先级,知道了所有外设中断都由 NVIC管理,比如USART、ADC、I2C、SPI等。GPIO产生的中断也不例外,但在给NVIC管理之前,还有一个EXTI(External interrupt/event controller,外部中断/事件控制器)先处理一下,如图 13.1.1 所示
韦东山
2022/05/05
3.1K0
GPIO—按键中断
FreeRTOS例程2-任务挂起恢复与使用中断遇到的坑!
任务挂起简单点理解就是现在不需要执行这个任务,让它先暂停,就是挂起。恢复就是从刚才挂起的状态下继续运行。
xxpcb
2020/08/04
3.1K0
STM32中断详述——外部EXTI
NVIC在STM32中,它是用来统一分配中断优先级和管理中断的,是一个内核外设,NVIC的结构图如下图3所示
秋名山码神
2023/04/28
1.1K0
STM32中断详述——外部EXTI
STM32F407 GPIO口输出配置配置步骤
STM32F407ZGT6 是意法半导体(STMicroelectronics)公司推出的一款高性能ARM Cortex-M4核心的32位微控制器(MCU)。它是 STM32F4 系列的一员,具备强大的处理能力和丰富的外设功能,适用于各种应用领域。
DS小龙哥
2023/07/08
7200
STM32F407 GPIO口输出配置配置步骤
相关推荐
STM32F407实现NEC协议红外线解码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验