STM32外部中断

本文介绍了STM32的19个外部中断源,包括与GPIO的映射关系和配置步骤。通过使能AFIO时钟、设置中断线映射、初始化参数、设置NVIC中断优先级和编写中断服务函数,详细阐述了如何实现STM32外部中断功能。重点提到了中断服务函数的组织方式以及清除中断标志位的重要性。
摘要由CSDN通过智能技术生成

STM32外部中断

  • STM32有19个外部中断:线0-15对应外部IO口的输入中断;线16连接PVD输出;线17连接RTC闹钟事件;线18连接USB唤醒事件。
  • GPIO与中断线的映射关系:GPIOx.0映射到EXTI0,GPIOx.1映射到EXTI1;以此类推。
  • 使用外部中断需要使能AFIO时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
  • 还要设置IO口与中断线的映射关系:(例)GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);
  • 然后设置中断的触发模式等初始参数
  • 然后设置NVIC中断优先级
  • 设置完中断优先级后就是编写中断服务函数,STM32的IO口外部中断函数只有6个,中断线0-4分别对应一个中断服务函数,中断线5-9共用一个,10-15公用一个,如图:
  • 注意:设置中断优先级分组需要在主函数中调用相关函数设置,一定要记住初始化函数(初始化延时、按键、LED)
  • 在这里插入图片描述
  • 在编写完中断服务函数之后要清楚中断标志位,如图:在这里插入图片描述
外部中断函数
#include "exti.h"//exti.c文件
#include "led.h"
#include "key.h"
#include "delay.h"
#include "usart.h"
 
//外部中断初始化函数
void EXTIX_Init(void)
{
   
    EXTI_InitTypeDef EXTI_InitStructure1;//中断初始化结构体
    NVIC_InitTypeDef NVIC_InitStructure1;//中断优先级初始化结构体
	KEY_Init();//初始化按键
  	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能AFIO时钟
  	GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);//设置I口与中断线的映射关系

  	EXTI_InitStructure1.EXTI_Line = EXTI_Line5;//设置5号中断线
  	EXTI_InitStructure1.EXTI_Mode = EXTI_Mode_Interrupt;//设置中断模式
  	EXTI_InitStructure1.EXTI_Trigger = EXTI_Trigger_Falling;//设置为下降沿触发
  	EXTI_InitStructure1.EXTI_LineCmd = ENABLE;//使能
  	EXTI_Init(&EXTI_InitStructure1);//初始化中断
	
	NVIC_InitStructure1.NVIC_IRQChannel = EXTI9_5_IRQn;//使能按键外部中断通道
  	NVIC_InitStructure1.NVIC_IRQChannelPreemptionPriority = 0x02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值