你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32的外部中断(寄存器控制)——个人笔记

[复制链接]
STMCU小助手 发布时间:2022-10-12 17:39
我感觉stm32的外部中断都是大同小异的,因此我以stm32g474为例,配置一下外部中断。举例引脚: PE5
1.配置引脚为输入模式(GPIOx_MODER);
2.配置触发模式(上升沿/下降沿);
3.配置EXTI的中断屏蔽寄存器(EXTI_IMR);
4.配置具体触发引脚(SYSCFG_EXTICR);
5.配置中断允许(ISER);(当然也可以配置优先级分组,我这里不需要,因此省略)
首先看EXTI的中断/事件框图:

20200923142607247.png

要想触发中断,首先经过“边沿检测器”,而边沿检测器需要配置上升沿检测还是下降沿检测。然后通过或门,可以看到或门的另一个输入连接着“软件中断事件寄存器”,这个寄存器可以不用管,然后就是 与上一个 “中断屏蔽寄存器”,最后连接到“中断挂起寄存器”,因此可以看到触发中断需要配置“边沿检测器”和“中断屏蔽寄存器”就可以触发中断了(唤醒和事件也以此类推)。以PE5举例:

  1. EXTI->RTSR1 |= 0x0020;
  2. EXTI->IMR1 |= 0x0020;
复制代码

配置完之后发现并不能进入中断,那是由于中断允许位没有配置。由于是PE5,那么该引脚属于EXTI5-line,在STM32G4系列向量表中找到EXTI5:

2020092314534189.png

表中说EXTI的lin5~9都共用这一个向量,那就是它了。配置ISER寄存器的第22位。

  1. NVIC->ISER[0] = 0x00800000;
复制代码

编译运行,发现PE5的上升沿不能进入中断,PA5的上升沿可以,可能还有个选择端口的寄存器,再看手册:

20200923145843258.png

嗷嗷,还要配置SYSCFG_EXTICR寄存器啊,康康寄存器说明:

2020092315013076.png

20200923150213395.png

PE5,那就将这个寄存器配置为0x00000040:

  1. SYSCFG->EXTICR[1] = SYSCFG_EXTICR2_EXTI5_PE;
复制代码

OK,这样就可以通过PE5顺顺利利地进入中断了,中断函数名称不确定的话可以在“.s”文件中找:

20200923150620161.png

OK,结束垃圾流水账。
————————————————
版权声明:Vice Versa XL


收藏 评论0 发布时间:2022-10-12 17:39

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版