【STM32F103实验(五)】外部中断

本文详细介绍了STM32F103的外部中断特性,包括19个中断线的配置和GPIO与中断线的映射关系。实验要求通过外部中断控制LED1的状态翻转,具体实现步骤包括IO口初始化、中断线映射、中断配置和中断服务函数编写。
摘要由CSDN通过智能技术生成

一、STM32外部中断介绍

STM32的每一个IO口都可以作为外部中断的中断输入口。STM32F103的中断控制器支持19个外部中断/事情请求。每个中断都设有状态位,每个中断/事件都有独立的触发和屏蔽设置。

STM32F103的19个外部中断为:

线0~15 对应外部IO口的输入中断
线16 连接到PVD输出
线17 连接到RTC闹钟事件
线18 连接到USB唤醒事件

其中,STM32供IO口使用的中断线只有16个。STM32如何把16个中断线和IO口一一对应起来呢?STM32是这样设计的,GPIO的管脚GPIOx.0~GPIOx.15(x = A,B,C,D,E,F,G)分别对应中断线0~15,如此一来,每个中断线对应了最多7个IO口。举个例子说明,GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0、GPIOG.0对应中断线0。每个中断线上每次只能连接在1个IO口上,这样就需要通过配置来决定对应中断线配置到哪个GPIO上了。如下是GP

STM32F103系列是ST公司生产的一款基于ARM Cortex-M3内核的微控制器,广泛应用于嵌入式领域。HAL库全称为Hardware Abstraction Layer,即硬件抽象层,是ST公司为简化硬件操作而提供的中间层API库。 使用STM32F103的HAL库进行外部中断编程通常涉及以下步骤: 1. 配置GPIO引脚为外部中断模式:首先需要选择合适的GPIO引脚,并将其配置为外部中断模式。这涉及到GPIO的模式设置,中断触发条件(上升沿、下降沿、上升下降沿触发或高电平、低电平触发)以及是否启用中断。 2. 配置中断优先级:在中断优先级寄存器中设置外部中断的优先级。 3. 配置NVIC(Nested Vectored Interrupt Controller):NVIC是负责中断管理的硬件模块,需要将其与中断线相关联,并配置中断触发方式和优先级。 4. 实现中断处理函数:编写中断服务函数(ISR),在该函数中编写中断发生时需要执行的代码。 5. 启用中断:配置完成后,需要在中断使能寄存器中启用相应的中断线,使能中断。 下面是一个简化的代码示例,假设我们要使用STM32F103的HAL库配置PC13引脚为外部中断,并在中断发生时翻转一个LED灯的状态: ```c /* 初始化GPIO */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == GPIO_PIN_13) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); // 翻转LED状态 } } int main(void) { HAL_Init(); // 初始化HAL库 __HAL_RCC_GPIOC_CLK_ENABLE(); // 使能GPIOC时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; // 配置PC13为输入浮空模式,用于外部中断 GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; // 下降沿触发 GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); // 配置中断优先级并启用 HAL_NVIC_SetPriority(EXTI15_10_IRQn, 2, 0); HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); // 主循环 while (1) { // 应用程序的其他部分 } } ``` 在上述代码中,`HAL_GPIO_EXTI_Callback` 函数是外部中断回调函数,当任何引脚产生中断时,HAL库会调用该函数,并传入引发中断的引脚编号。这里我们检查了是否是PC13引脚触发了中断,并执行了翻转LED的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机学习之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值