STM32外部中断解析

举报
yd_274589494 发表于 2023/07/27 17:39:05 2023/07/27
【摘要】 @TOC 前言本篇文章将带大家了解STM32F103的外部中断。 一、外部中断是什么外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。 二、STM32F103的外部中断外部中断一共有20条中断线。通过观察发现不同组的相同引脚号的引脚连接到了相同的...

@TOC


前言

本篇文章将带大家了解STM32F103的外部中断。

一、外部中断是什么

外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。

二、STM32F103的外部中断

外部中断一共有20条中断线。
通过观察发现不同组的相同引脚号的引脚连接到了相同的外部中断线上。
在这里插入图片描述
其中
外部中断线 EXTI16连接到PVD输出。
外部中断线 EXTI17连接到RTC警告事件。
外部中断线 EXTI18连接到USB唤醒事件。
外部中断线 EXTI19连接到ETH唤醒事件。
在这里插入图片描述
外部中断既可以选择上升沿也可以选择下降沿,也可以同时使用这两个组成双边沿触发。
在这里插入图片描述

三、外部中断的中断号

在stm32f103xe.h里面我们可以看到外部中断及其他中断的中断号。
不是每一个中断线都有一个中断号,有的中断线是共用一个中断号的。
比如EXTI15_10_IRQn = 40
外部中断线10到15就是共用40这个中断号的。
在这里插入图片描述

四、HAL库的外部中断初始化流程

在stm32f1xx_hal_exti.c里面我们可以看到使用外部中断的方法。
在这里插入图片描述
在stm32f1xx_hal_gpio.c里面我们可以看到引脚想要被配置为外部中断需要做的设置。
使用HAL_NVIC_SetPriority()这个函数设置外部中断优先级。
使用HAL_NVIC_EnableIRQ()这个函数使能中断。
在这里插入图片描述
这里我们还需要对void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)这个函数进行重写,_weak代表这个函数是虚函数我们可以对他进行重写,处理我们自己的一些逻辑。
在这里插入图片描述
总结上面内容:
外部中断初始化流程:
1.使用HAL_NVIC_SetPriority设置外部中断的优先级
2.使用HAL_NVIC_EnableIRQ使能外部中断
3.重定向中断服务函数
4.在中断服务函数中调用HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)然后重定向回调函数void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

总结

本篇文章的讲解就到这里了,想要系统学习STM32的小伙伴可以找我一起交流。
下一篇文章将讲解使用外部中断配置按键。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。