外部中断实验

关于中断

Crotex-M3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断。

STM32F10x 芯片有 84 个中断通道,包括 16 个内核中断和 68 个可屏蔽中断,对于STM32F103系列芯片只有60个可屏蔽中断,参考《STM32F10x 中文参考手册》-9 中断和事件章节。

NVIC (Nested Vectored Interupt Controler) :嵌套向量中断控制器。

优先级分组

STM32F103 芯片支持 60 个可屏蔽中断通道,每个中断通道都具备自己的中断优先级控制字节(8 位,理论上每个外部中断优先级可以设置为0-25,数值越小,优先级越高。但是 STM32F103 中只使用 4 位,高 4 位有效),

用于表达优先级的高 4 位又被分组成抢占式优先级响应优先级(亚优先级”或“副优先级),每个中断源都需要被指定这两种优先级。

在抢占式优先级相同的情况下,高响应优先级的中断优先被响应

当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到的中断就要等到前一个中断处理完之后才能被处理。

如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个。

如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理那一个,越靠前的先执行。

有关NVIC 中断相关的库函数都在库文件 misc. 和 misc.h 中。

STM32F103 中指定中断优先级的寄存器位有 4 位,这 4 位的分组方式如下5种,设置优先级分组可调用库函数 NVIC_PriorityGroupConfig()实现。

在这里插入图片描述
在这里插入图片描述
GPIOx.0-GPIOx.15(x=A,BC,DE,F,G)分别对应中断线 EXTI0-EXTI15,这样一来每个中断线就对应了最多 7 个 IO 口,比如:GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0、GPIOG.0。

在这里插入图片描述

中断模式

在这里插入图片描述
标号 1 为输入线,EXTI 控制器有 20 个中断/事件输入线,输入线一般是存在电平变化的信号。

标号2边沿检测电路,对触发方式(上升沿触发下降沿触发)进行选择,通过上升沿触发选择寄存器和下降沿触发选择寄存器 。可以是只有上升沿触发、只有下降沿触发、上升沿和下降沿都触发

标号3是一个或门电路,只要有一个为有效信号 1, 则输出有效信号 1,

标号4是一个与门电路,只有当两者都为有效信号 1,才会输出有效信号 1,

标号5将挂起寄存器内容输入到 NVIC 内,实现系统中断事件的控制。

标号6是一个与门电路,只有两者都为有效电平 1,标号 6 输出才有效,

标号7脉冲发生器电路,标号 6 输出有效,脉冲发生器输出一个脉冲信号。

标号8脉冲信号,通常用来触发定时器、ADC 等开始转换。

小结
中断线路:最终会输入到 NVIC 控制器中,运行中断服务函数,实现中断内功能。

事件线路:最后产生的脉冲信号流向其他的外设电路

EXTI 外设接口时钟是由 PCLK2,即 APB2 提供

外部中断实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
外部中断配置在APP文件夹exti.c (驱动文件)和exti.h(头文件)。

exti.c

#include "exti.h"
#include "led.h"
#include "SysTick.h"
#include "key.h"

void My_EXTI_Init(void)  //外部中断初始化函数
{
   
	NVIC_InitTypeDef NVIC_InitStructure;
	EXTI_InitTypeDef  EXTI_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能AFIO时钟
//4个按键端口(PE2/PE3/PE4/PA0)映射到相应的中断线上	
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2);//选择GPIO管脚用作外部中断线路
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值