码迷,mamicode.com
首页 > 其他好文 > 详细

GPIO外部中断

时间:2019-12-17 22:43:49      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:oschina   stat   cto   stm32   lcm   src   def   优先级   nbsp   

来源:莆田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外部中断

标签:oschina   stat   cto   stm32   lcm   src   def   优先级   nbsp   

原文地址:https://www.cnblogs.com/1994july/p/12056977.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!