STM32F407中断

中断

CPU执行,NVIC配置,触发源为扩展中断(外中断)和外中断

中断资源

1.一共92个中断源,其中10个系统中断,82个非系统中断
2.扩展中断有14个,其中通过IO口触发的有7个
3.7个IO口触发的中断,可以由16个由GPIOX(0-15)硬线连接
4.其中GPIOX(0-4),每个对应一个中断源EXIT(0-4),GPIOX(5-9)对应EXIT9_5,GPIOX(10-15)对应EXIT15_10
5.非GPIO触发的中断,每个中断都与触发源一一对应

中断几点说明

1.中断属于M4内核相关,因此控制中断寄存器放置在M4内核外设地址上
2.控制中断需要系统控制块(SCB)以及NVIC寄存器
3.SCB和NVIC,挂载在SCS系统控制空间总线上
4.所以配置中断,就是配置SCB及NVIC寄存器
5.对于外部中断需要配置APB2上的EXTI寄存器
6.对于通过GPIO实现的外部中断,需要配置APB2上面的SYSCFG寄存器

SCB寄存器介绍

位置:
SCB挂载在SCS上
寄存器:
1.SCB->AIRCR:配置优先级分组
总结:
设置所有中断,抢占优先级位数以及响应优先级位数

NVIC寄存器介绍

位置:
NVIC挂载在SCS上
寄存器:
1.NVIC->ISER[8]:中断使能设置寄存器,每位代表中断
2.NVIC->ICER[8]:中断清除使能寄存器
3.NVIC->ISPR[8]:中断挂起设置寄存器
4.NVIC->ICPR[8]:中断清除挂起寄存器
5.NVIC->IABR[8]:中断激活状态位寄存器
2.NVIC->IP[240]:中断优先级寄存器
7.NVIC->STIR:软件触发方式寄存器
总结:
设置每个中断的优先级,以及中断是否使能

外部中断寄存器

位置:
EXTI挂载在APB2上
寄存器:
2.EXTI_IMR:中断屏蔽寄存器
3.EXTI_EMR:事件屏蔽寄存器
4.EXTI_RTSR:上升沿触发选择寄存器
5.EXTI_FTSR:下降沿触发选择寄存器
6.EXTI_SWIER:软件中断事件寄存器(允许软件申请CPU中断)
7.EXTI_PR:挂起寄存器(发生了中断值为1,写1清除)
总结:
外部中断触发方式等配置

系统中断寄存器介绍

位置:
SYSCFG挂载在APB2上
寄存器:
SYSCFG_EXTICR1:对应四组EXTI,选择哪个IO作为EXTI x 的中断输入源(x为0-3)
SYSCFG_EXTICR2:对应四组EXTI,选择哪个IO作为EXTI x 的中断输入源(x为4-7)
SYSCFG_EXTICR3:对应四组EXTI,选择哪个IO作为EXTI x 的中断输入源(x为8-11)
SYSCFG_EXTICR4:对应四组EXTI,选择哪个IO作为EXTI x 的中断输入源(x为12-15)
总结:
EXTI0包含了每个GPIO X的第0个IO,因此一共16个EXTI
GPIO到中断的映射

SCB相关函数介绍

1.NVIC_PriorityGroupConfig():用来配置中断分组
2.NVIC_GetPriorityGrouping():用来get中断分组

NVIC相关函数介绍

1.NVIC_EnableIRQ():使能选择的中断号中断ISER
2.NVIC_DisableIRQ():非使能选择的中断号中断ISCR
3.NVIC_SetPendingIRQ():根据中断号,设置中断挂起ISPR
4.NVIC_ClearPendingIRQ():根据中断号,清除中断挂起ICPR
5.NVIC_SetPriority():设置中断抢占响应优先级IP
6.NVIC_GetPendingIRQ():获取中断状态是否挂起ISPR
7.NVIC_GetActive():获取中断状态是否激活IABR
8.NVIC_GetPriority():获取中断抢占响应优先级IP

外部中断函数介绍

1.EXTI_DeInit():将EXTI寄存器重置到默认值
2.EXTI_Init():EXTI初始化函数
3.EXTI_StructInit():EXTI结构体初始化
4.EXTI_GenerateSWInterrupt():产生软件中断
5.EXTI_GetFlagStatus():检查是否设置了软件中断行标志
6.EXTI_ClearFlag():清除中断挂起标志
7.EXTI_GetITStatus():获取中断状态
8.EXTI_ClearITPendingBit():清除中断挂起位

系统中断函数介绍

1.SYSCFG_EXTILineConfig():当GPIO用作外部中断线时,选择哪个GPIO使用该组的中断线

非GPIO触发中断的中断配置步骤

1.总线时钟配置
2.配置中断分组
3.使能中断触发源时钟
4.外设中断配置
5.NVIC中断配置
6.中断服务函数配置

使用GPIO作为中断触发条件的中断配置步骤

1.总线时钟配置
2.GPIO时钟使能
3.GPIO模式配置,针对IO初始化
4.SYSCFG时钟使能
5.SYSCFG硬线IO口选择,针对IO
6.扩展中断配置,针对硬线
7.NVIC中断配置,针对82个中断
8.中断服务函数

图片

图1:七个外部中断接口
在这里插入图片描述
图2:共23条线可选择性的挂载在七条线上
在这里插入图片描述
图3:中断寄存器内存分析
在这里插入图片描述
图4:SCB与NVIC在内存中的位置
在这里插入图片描述
图5:SCB的各个寄存器
在这里插入图片描述

图6:NVIC的各个寄存器
在这里插入图片描述
图7:中断框图
在这里插入图片描述
图8:外部中断工作原理F4的外设一共23,下图个数上20非F4的23个
!

小点整理:
CMSIS:Cortex Microcontroller Software Interface Standard软件接口规范
中断与事件:一定要有中断服务函数,但是事件却没有对应的函数。
事件可以在不需要CPU干预的情况下,执行这些操作,但是中断则必须要CPU介入。

  • 36
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值