GPIO外部中断

Posted 1994july

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GPIO外部中断相关的知识,希望对你有一定的参考价值。

来源:莆田SEO

在STM32中,其每一个外设都可以产生中断。

中断分为分为

①系统异常,内核

技术图片

②外部中断,外设

技术图片

NVIC(Nested Vector Interrupt Controller ):嵌套向量中断控制器,属于内核外设,管理着包括内核片和片上所有外设的终端相关功能。

core_cm3.h与misc.h有相关函数

野火指南者内核中断有10个,外设中断有60个。

由NVIC->IPRx来控制

技术图片

技术图片

static void EXTI_NVIC_Config(void)

{

NVIC_InitTypeDef NVIC_InitStruct;//配置NVIC结构体NVIC_InitTypeDef;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);设置优先级分组

NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn ;

NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;//选择主优先级

NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;//选择次优先级

NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStruct);//将写好的结构体写入到初始化函数中

}

选择NVIC的中断线,这里选择的是外部中断0,外部中断有20个,前16个为GPIO中断

EXTI0_IRQn

EXTI1_IRQn

EXTI2_IRQn

EXTI3_IRQn

EXTI4_IRQn

EXTI9_5_IRQn

EXTI15_10_IRQn

配置完NVIC接着配置EXTI_InitTypeDef,NVIC像一个中断大门而EXIT就像个中断的小门

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //打开时钟,选择复用模式 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); //设置外部中断源

EXTI_InitStruct.EXTI_Line = EXTI_Line0;//选择外部中断线0

EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;选择外部触发模式

EXTI_InitStruct.EXTI_Trigger =EXTI_Trigger_Rising;选择上拉沿触发

EXTI_InitStruct.EXTI_LineCmd = ENABLE;使能

EXTI_Init(&EXTI_InitStruct);

以上是关于GPIO外部中断的主要内容,如果未能解决你的问题,请参考以下文章

GPIO外部中断

STM32基本GPIO操作:按键输入(扫描+外部中断)

STM32F103ZET6外部中断不起作用,不知道程序哪里错了?

gpio中断和irq中断的区别

GPIO外部中断

STM32G070RBT6基于Arduino框架GPIO外部中断