STM32F4外部中断

首先介绍什么是中断,指CPU对外部事件发出的中断请求进行响应和处理,完成后返回程序断点处继续之前的工作。打一个很简单的比方,你在家看电视时突然门铃响了,这就是一个中断请求,然后你就去开门,结果发现是快递来了,你签收完快递回到家继续看电视,这就是一整个中断过程。
再来说说中断的抢占优先级和响应优先级,当你看电视时家里的电话和门铃同时响了,也就是同时有两个中断发生,那么CPU要响应先那个中断就要看中断优先级,如果中断优先级相同时再看响应优先级。STM32F4中需要设置中断优先级分组,如果不设置就是默认抢占优先级和响应优先级都占两位,也就是从零到三,值越小优先级越高。
整个中断过程可以分为三步:
1.中断检测
2.中断响应
3.中断挂起
在STM32F4中以按键外部中断为例,需要以下几个步骤:
1.定义NVIC、EXTI结构体
2.使能系统时钟
3.设置IO口和中断的映射关系
4.配置外部中断EXTI控制寄存器
5.配置NVIC控制寄存器
6.中断服务函数
关于NVIC和EXTI寄存器的区别:NVIC是嵌套向量中断控制器,而EXTI为外部中断控制器。NVIC相当于控制中断的大开关,而EXTI只是系统中断里面外部中断的小开关。
为什么要使能系统时钟:STM32F4有两条总线:AHP即advanced high performance bus 高级高性能总线和APB即advanced periphoral bus高级外设总线。如图在这里插入图片描述
在每次芯片复位后,所有外设时钟都被关闭了,SRAM和FLASH除外,所以在使用外设时需要使能时钟,这么做的目的是为了降低芯片的功耗,开启时钟相当于提供电源。在STM32F4中文参考手册2.2节存储器组织结构中可以看到外设挂载到那根总线上。在这里插入图片描述

代码如下:
`#include “EXTI.h”

void EXTI2_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line2)!=RESET)
{
GPIO_WriteBit(GPIOE,GPIO_Pin_13,!GPIO_ReadOutputDataBit(GPIOE,GPIO_Pin_13));

}
EXTI_ClearITPendingBit(EXTI_Line2);

}

void InitExit(void)
{

NVIC_InitTypeDef NVIC_InitStruct;

EXTI_InitTypeDef EXTI_InitStruct;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource2);

EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStruct.EXTI_Line=EXTI_Line2;
EXTI_InitStruct.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStruct);

NVIC_InitStruct.NVIC_IRQChannel=EXTI2_IRQn; 
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStruct);

}
`
从keil软件复制过来注释全乱了,所以删掉了注释,那么两个结构体的成员变量怎么设置如图:
在这里插入图片描述
在这里插入图片描述
需要注意的就是怎么选择中断线,在哪个GPIO管脚上就选择那根线,这是内部结构决定的,如图是用选择器来进行选择的。在这里插入图片描述
还有一点必须注意中断服务函数名称不能写错,都为
EXTI2(此处为中断线编号)_IRQHandler
如果写错既不会报错也无法进入中断服务函数。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值