STM32F103标准库开发:外部中断(EXTI)实验

本文详细介绍了STM32F103系列微控制器中外部中断EXTI的配置和使用,包括EXTI的简介、线路映像、相关寄存器、配置方法以及程序实现。通过设置中断屏蔽寄存器、事件屏蔽寄存器等,实现GPIO引脚的上升沿或下降沿触发中断功能。
摘要由CSDN通过智能技术生成

STM32F103标准库开发----目录
STM32F103标准库开发----外部中断(EXTI)实验----程序源码


本文章技术信息均出自:STM32F103系列超详细参考手册-中文版


一、外部中断(EXTI)—简介

EXTI (External interrupt/event controller)——外部中断/事件控制器。
互联型STM32有20个能够产生事件/中断请求的边沿检测器,STM32F103系列有19个能够产生事件/中断请求的边沿检测器。
每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。
每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求。

二、外部中断(EXTI)—框图

在这里插入图片描述

好的,我可以为您提供一些关于stm32f103标准外设库外部中断实验的指导。 首先,您需要了解外部中断通常用于处理来自外部设备的信号,例如按钮按下等事件。在STM32F103系列微控制器中,外部中断通常与GPIO相结合使用。 以下是一个基本的外部中断实验步骤: 1. 配置GPIO引脚为输入模式,用于连接外部中断信号线 2. 配置外部中断触发条件,例如上升沿触发、下降沿触发等 3. 初始化外部中断,并将其与相应的GPIO引脚绑定 4. 在外部中断的处理程序中编写相应的代码,例如改变LED的状态等。 以下是一些基本的代码示例: 配置GPIO引脚为输入模式: ``` GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOB, &GPIO_InitStructure); ``` 配置外部中断触发条件: ``` EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); ``` 初始化外部中断: ``` void EXTI0_IRQHandler(void) { if (EXTI_GetITStatus(EXTI_Line0) != RESET) { // 处理中断事件 EXTI_ClearITPendingBit(EXTI_Line0); } } ``` 在处理程序中编写相应的代码,例如改变LED的状态等: ``` void EXTI0_IRQHandler(void) { if (EXTI_GetITStatus(EXTI_Line0) != RESET) { // 处理中断事件 GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_1))); EXTI_ClearITPendingBit(EXTI_Line0); } } ``` 这是一个基本的外部中断实验步骤,您可以根据自己的需求进行相应的修改和优化。希望这些指导对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

根号五

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

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

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

打赏作者

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

抵扣说明:

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

余额充值