【STM32】EXTI与NVIC标准库使用框架

本篇博客重点在于标准库函数的理解与使用,搭建一个框架便于快速开发

目录

EXTI简介

EXTI配置

使能AFIO的时钟

配置GPIO端口为外部中断 

外部中断初始化

NVIC介绍与配置

NVIC中断优先级分组

 NVIC初始化

NVIC框架

 EXTI配置图

中断函数

中断函数配置

获取中断挂起位

清楚中断挂起标志位 

 中断函数框架

EXTI框架


EXTI简介

EXTI(Extern Interrupt),外部中断,也可配置事件,又可称事件控制器

EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序

支持的触发方式:上升沿/下降沿/双边沿/软件触发

支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断

中断通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒

后个主要用于低功耗的停止模式下使用外部中断唤醒

触发响应方式:中断响应/事件响应,中断由CPU响应,事件由外设响应

EXTI配置

使能AFIO的时钟

外部中断需要写事件控制寄存器(AFIO_EVCR),外部中断配置寄存器(AFIO_EXTICRX)

对寄存器AFIO_EVCR,AFIO_MAPR和AFIO_EXTICRX进行读写操作前,应当首先打开AFIO 的时钟。

事件控制寄存器(AFIO_EVCR)

故要开启AFIO的时钟,而AFIO在APB2外设总线上

 再由RCC时钟树,需要使能APB2外设的AFIO时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

配置GPIO端口为外部中断 

有关GPIO的详细配置请阅读这篇博客,这里不再赘述

【STM32】GPIO和AFIO标准库使用框架-优快云博客

外部中断的GPIO_Mode为输入模式,设置为输入信号的默认电平对应的模式,更多见STM32F10xxx参考手册8.1.11 外设的GPIO配置

输入电平默认为高电平,上拉输入;输入电平默认为低电平,下拉输入。输入电平不确定选浮空输入

相同的Pin不能同时触发中断,比如GPIOX0只能有一个可以触发中断,GPIOA0映射到中断了,GPIOB0就不可以了

GPIO_PortSourceGPIOX  ,X为A,B,C... 

GPIO_PinSourcexX,             X为0,1,2 ...

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource12);

GPIO_EXTILineConfig函数将指定端口配置到中断通道

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//输出速度,输入无用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值