gd32f303 设计中断优先级_「正点原子NANO STM32F103开发板资料连载」第十章 外部中断实验...

这篇博客详细介绍了如何在 STM32F103 开发板上配置和使用外部中断,包括STM32 外部中断的基本概念、配置步骤、中断线与GPIO的映射、中断优先级设置和中断服务函数的编写。通过具体的实验案例,演示了如何利用中断控制LED和蜂鸣器,以及如何在HAL库中设置中断回调函数实现中断处理逻辑。
摘要由CSDN通过智能技术生成

1)实验平台:【正点原子】 NANO STM32F103 开发板

2)摘自《正点原子STM32 F1 开发指南(NANO 板-HAL 库版)》关注官方微信号公众号,获取更多资料:正点原子

2999cbe18fd07227e8f6ab2afb014657.png

第十章 外部中断实验

这一章,我们将向大家介绍如何使用 STM32F1 的外部输入中断。在前面几章的学习中,我们掌握了 STM32F1 的 IO 口最基本的操作。本章我们将介绍如何将 STM32F1 的 IO 口作为外部中断输入,在本章中,我们将以中断的方式,实现我们在第八章所实现的功能。本章分为如

下几个部分:

10.1 STM32 外部中断简介

10.2 硬件设计

10.3 软件设计

10.4 下载验证

10.1 STM32 外部中断简介

STM32 的 IO 口在第六章有详细介绍,而中断管理分组管理在前面也有详细的阐述。这里

我们将介绍 STM32 外部 IO 口的中断功能,通过中断的功能,达到第八章实验的效果,即:通

过板载的 4 个按键,控制板载的两个 LED 的亮灭以及蜂鸣器的发声。

这里我们首先 STM32 IO 口中断的一些基础概念。STM32 的每个 IO 都可以作为外部中断

的中断输入口,这点也是 STM32 的强大之处。STM32F103 的中断控制器支持 19 个外部中断/

事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的

19 个外部中断为:

线 0~15:对应外部 IO 口的输入中断。

线 16:连接到 PVD 输出。

线 17:连接到 RTC 闹钟事件。

线 18:连接到 USB 唤醒事件。

从上面可以看出,STM32 供 IO 口使用的中断线只有 16 个,但是 STM32 的 IO 口却远远不

止 16 个,那么 STM32 是怎么把 16 个中断线和 IO 口一一对应起来的呢?于是 STM32 就这样

设计,GPIO 的管教 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线 0~15。这样每个中

断线对应了最多 7 个 IO 口,以线 0 为例:它对应了 GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、

GPIOE.0、GPIOF.0、GPIOG.0。而中断线每次只能连接到 1 个 IO 口上,这样就需要通过配置来

决定对应的中断线配置到哪个 GPIO 上了。下面我们看看 GPIO 跟中断线的映射关系图:

9b391fe8dce6ae52ac1d610229d3b37a.png

图 10.1.1 GPIO 和中断线的映射关系图

接下来我们来看看使用 HAL 库配置外部的一般步骤。HAL 中外部相关配置函数和定义在文件stm32f1xx_hal_exti.h 和 stm32f1xx_hal_exti.c 文件中。

1)使能 IO 口时钟。

首先,我们要使用 IO 口作为中断输入,所以我们要使能响应的 IO 口时钟,具体的操作方

法跟我们按键实验是一致的,这里就不做过多讲解。

2)设置 IO 模式,触发条件,设置 IO 口与中断线的映射关系。

该步骤如果我们使用标准库那么需要多个函数分部实现。而当我们使用 HAL 库的时候,

则都是在函数 HAL_GPIO_Init 中一次性完成的。例如我们要设置 PA0 链接中断线 0.,并且为上

升沿触发,代码为:

GPIO_InitTypeDef GPIO_Initure;

GPIO_Initure.Pin=GPIO_PIN_0; //PA0

GPIO_Initure.Mode=GPIO_MODE_IT_RISING; //上升沿触发

GPIO_Initure.Pull=

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值