7 拓展中断_事件控制器(EXTI)(STM32HAL库 )

news/2024/10/23 5:39:55/

目录

EXTI-扩展中断和事件控制器

事件的概念

EXTI-扩展中断和事件控制器

EXTI外设框图

F1/F4/F7(看懂与或门)

H7

STM32CubeMX中的EXTI配置


EXTI-扩展中断和事件控制器

事件的概念

  • STM32上许许多多的外设,是通过内部信号来协同工作的。这个信号,可以理解为事件。比如一个定时器(TIM),当我们使用定时器来计数的时候,怎么知道定时器已经计数完毕?这时就往往通过一个“计数完成事件”来告知(系统/用户)计数已经完成。
  • 有些事件是可见的,有些事件是不可见的。事件的可不可见,具体体现在寄存器里可不可以查到这些事件的标志。那如果我们想使用这些事件的时候,该怎么做?查询事件标志吗?
  • 在STM32中,绝大多数事件是不可见的,但是事件几乎都与中断功能绑定在一起。所以通常我们会开启中断的功能,来使用相应的事件。
  • 事件 ----> 中断 事件 ---->事件(即事件可以导致中断的产生,也可以导致另一个事件的产生)

EXTI-扩展中断和事件控制器

  • EXTI-扩展中断(也叫外部中断)和事件控制器,是STM32上的一个外设。它可以捕获外部输入线电平变化等等的一些事件。EXTI捕获到了事件后,还可以生成相应的EXTI中断及等等的一些中断。
  • 所以EXTI外设可以大致概括为两个功能:
    • 捕获外部输入等事件。
    • 生成EXTI中断等中断请求。

EXTI外设框图

F1/F4/F7(看懂与或门)

  • 其中输入线一般指GPIO的输入,但在F7中,由于F7的功能强大,就不仅仅包括GPIO的输入(硬件触发)了,还包括软件触发(由软件中断事件寄存器来决定)
  • 下降沿触发选择寄存器和上升沿触发选择寄存器决定了输入信号是否允许传入到下一级去。如果既不满足下降沿和上升沿,信号就无法通过边沿检测电路传入下一级门电路
  • 请求挂起寄存器可以判断出是哪一种触发方式触发了事件
  • 最终到NVIC中断控制器中,就可以切实的产生中断了
  • 触发中断时,如果不想产生中断,可以使用屏蔽寄存器将中断信号拦截住

H7

其中可配置事件可根据F1/F3/F7框图来理解

直接事件输入指使用外设来唤醒芯片

主要功能是利用中断事件来申请中断请求或者唤醒CPU

STM32CubeMX中的EXTI配置

(1)选择GPIO线路

(2)进行模式选择

其中可以选择外部中断模式和外部事件模式,以及选择边沿触发方式

  • 中断模式:既产生中断信号也产生事件信号
  • 事件模式:只产生事件信号,事件模式一般用于将外部输入线的事件来触发ADC信号的转换或者其它外设的一些功能

这里选择双边缘触发外部中断方式

(3)配置NVIC

这里警告不用管。

这个警告的意义在于提醒开发者当你选择了引脚某功能后,会限制其他category 的部分功能。

如上图中被cubeMX 用紫红色标出的 System Wake-Up 4。

这种警告就是说一个管脚有多个可能的作用,你选择了一个之后,其他不能选,用一个警告三角形提示你。

(4)生成工程

(5)查看工程代码

EXTI代码如图所示

其中CubeMX是使用HAL_GPIO_Init来通过判断Mode的为IT从而实现EXTI的配置

同样我们也可以直接使用EXTI的库包来配置

补充:中断的触发流程和复位异常的触发流程是一样的。

当我们触发一个中断之后,CPU会去中断向量表中进行偏移,找到对应中断在中断向量表中的中断服务函数入口地址。

简单来说就是当中断成功触发了,就会跳转到相应中断的中断服务函数中去

记得自己指定的操作要写在中断服务函数的if内


http://www.ppmy.cn/news/656213.html

相关文章

小白开酒吧前要知道的几个知识(一)

第一、团队建设如果决定开酒吧,除非你的资金充裕,否则都该寻找合伙人。共同的目标会让你和合伙人之间合作的更愉快,所以合伙人应该选择善于沟通交流的。选定靠谱的合伙人之后,应该建立一个大致的团队体系,在团队内做好…

bat批处理把文件从一个电脑传到另一台电脑

:两台电脑在同一局域网,可以互相访问。 2:接收复制文件的电脑,文件夹要设置共享。 代码: net use \192.168.0.1 “password#” /user:“username” xcopy test.sql \192.168.0.1\temp\ /s/d/y pause 参数详解&…

如何快速简单的把电脑本地文件传到远端服务器?

对于运维小伙伴而言,在家办公是经常有的事情。所以一定要学会快速简单的把电脑本地文件传到远端服务器,那具体怎么操作呢?用什么工具好? 这里,我们小伙伴悄悄告诉您,这种情况就用行云管家。使用行云管家进…

电脑技巧:整理电脑键盘上每个键的含义

电脑键盘是把文字信息的控制信息输入电脑的通道,从英文打字机的键盘演变而来的。它最早出现在电脑上的时候,还是一种叫做“电传打字机”的部件。那些陌生的键盘按键都有什么用途? 很多新手不知道键盘上功能键和字母数字键以外的键盘按键有什么用&#x…

分页利用PageHelper.startPage(page, rows)时所放位置的注意事项

我在利用PageHelper.startPage(page, rows)做分页时,得到的total始终为0,满足不了工作要求.网上没搜到解决方案,自己调试了好久,才发现,顺序写错了。下面分享一下我工作中在用PageHelper时,遇到的问题&…

PageHelper.startPage()使用问题:,以及利用PageInfo和Page手动分页

建议使用方法为:Mapper接口方式的调用,但是必须紧跟.startPage()方法; 因为项目中是查询多次分页的结果后,需要对list进行分页,此种情况,结合PageInfo和Page进行手动分页,通过以下方法实现 public ServerR…

将4G以上文件从iphone传到电脑中的方法

由于iphone闪存是fat32格式的,它支持的最大单个文件是4个G,所以4G以上的文件读取较为困难。我试过很多方法,其中 失败的方法: 1、直接用数据线连接到windows电脑中,无法读取 2、iCloud中无法查看 3、QQ文件传输失败…

PageHelper.startPage的作用

关于PageHelper.startPage的作用 PageHelper.startPage相当于开启分页,通过拦截MySQL的方式,把你的查询语句拦截下来加limit. public PageInfo<BcRegion> findPage(PageQuery pageQuery) {PageHelper.startPage(pageQuery.getPage(),pageQuery.getRows());List<BcRe…