STM32 HAL库 外部中断 实现按键控制LED亮灭

目录

1、为什么使用GPIO外部中断控制LED亮灭?

2、NVIC嵌套向量中断控制器

3、EXTI外部中断

4、项目的硬件排线

5、STM32CUBE_MX配置

6、HAL库代码

7、实际效果


1、为什么使用GPIO外部中断控制LED亮灭?

        实现LED亮灭控制有很多方式,其中一种就是在main函数的while循环里面不断地检测GPIO引脚的电平变化实现输出的电平变化从而实现LED的亮灭控制。但是这种轮询的方式让CPU在不断地运行,不仅消耗电量而且消耗算力。

        另一种方式就是使用GPIO外部中断,这是一种可以由硬件自动触发任务执行的方式,只有需要进行控制的时候,CPU才会介入控制。

2、NVIC嵌套向量中断控制器

        NVIC属于STM32的内核外设,用于响应外设请求并让CPU跳转到指定的指令地址进行执行任务。STM32F103C8T6单片机只有10个系统异常和60个可屏蔽中断。

        STM32可以精确的控制60种中断的具体抢占优先级和响应优先级。原因是IPR寄存器组有15个寄存器。每个寄存器32位,8位控制一种中断,那么有15*4一共60个控制方式,用于解决多个相同中断的优先级处理问题。

        另外,除了上面的60个具体中断类型的控制,AIRCR寄存器还提供了对这60种中断的总的控制方式,AIRCR寄存器是一个32位寄存器,其中的10-8位用于设置总的优先级。具体位比特值对应的控制形式如下图。

        AIRCR寄存器的值会直接影响IPR寄存器8位控制位中的高四位,IPR高4位的不同组合的控制也如上图所示。

        中断向量表:就是每种中断对应跳转的函数地址,比如ADC1中断在A地址,IIC中断在C地址等。这些地址都已经被编译器提取确定无法修改,但是虽然有60种中断,但是电平变化的引脚却不止60个,所以需要在中断服务函数里面手动判定是哪个引脚触发了中断。

3、EXTI外部中断

        外部中断主要来自GPIO引脚以及STM32芯片内部的外设。具体如下:

  1. 0-15:对应GPIO_PIN 0-15中断;
  2. 16:PVD输出;
  3. 17:RTC闹钟事件;
  4. 18:USB唤醒事件;
  5. 19:连接到以太网唤醒事件(只适用于互联型产品)

4、项目的硬件排线

        具体的布线如下。系统板来自江科大最小系统板,PC13是该系统板自己集成的LED灯。

5、STM32CUBE_MX配置

        第一步:配置烧录方式

        第二步:配置PA8引脚功能

        第三步:配置PC13引脚功能

6、HAL库代码

        复杂下面的代码到main.c里面即可。HAL_GPIO_EXTI_Callback表示GPIO外部中断的回调函数,

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {if (GPIO_Pin == GPIO_PIN_8) {// 切换PC13引脚的电平HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);}
}

7、实际效果

        请大家多多点赞。

LED_EXTI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/36852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公文出错事非小,这些公文写作的常见错误,你中过招吗?

公文是企事业单位、相关部门内外沟通交流的重要工具,不少“笔杆子”经常需要与公文打交道,每天会接触大量的公文。然而在公文撰写的细微之处,稍有不慎,便可能犯下一些常见的错误。这些错误如同蚁穴,虽小却足以破坏公文…

stm32cubemx,adc采样的几种方总结,触发获取adc值的方法dma timer trigger中断

stm32cubemx adc采样的几种方总结,触发获取adc值的方法 timer trigger中断 方法1,软件触发方法2:,Timer触发ADC采集通过DMA搬运 触发获取adc值的方法 Regular Conversion launched by software 软件触发 调用函数即可触发ADC转换 Timer X Cap…

Python基于逻辑回归分类模型、决策树分类模型、LightGBM分类模型和XGBoost分类模型实现车辆贷款违约预测项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 随着经济的发展和人民生活水平的提高,汽车消费在居民消费中所占比例逐渐增加,汽…

克服指标管理痛点,实现数据价值最大化

在当下的企业管理中,由于数据量的激增,管理方式逐渐从基于经验转向基于数据。在此过程中,我们能够通过数据探查业务情况、分析数据,从而获取更优的决策支持数据。这通常通过数据报表或分析平台来实现,对于临时性场景&a…

护眼大路灯哪个牌子好用?五款好用的护眼灯分享

护眼大路灯哪个牌子好用?现在的孩子从幼儿园开始就开始学习,面临的用眼压力就很大,但想要孩子视力不受影响,大路灯是得好好安排起来,但动辄大几千的护眼灯真是让我们这些普通家庭的家长望而却步,有没有好用…

控制系统稳定性常见策略

提升控制系统稳定性是确保系统可靠运行的关键,以下是一些常见策略: 1. 控制算法优化 优化控制算法是提升系统稳定性的核心方法之一。常见的控制算法包括PID控制、模糊控制、自适应控制等。通过调整和优化这些算法的参数,可以显著提高系统的…

填报高考志愿时,学校、专业和城市怎么选择呢?

我的观点是: 专业>城市>学校 专业是兴趣导向,符合自己的价值观,失去了这种驱动力的专业学习,会变得非常艰难的,而且没有竞争力,所以我的排序第一位是专业。 其次是城市,最好是一线城市&…

划重点!炒伦敦金看k线图的要点

对于刚刚开始参与伦敦金交易,还在学习如何看K线的投资者来说,掌握一些看k线图的要点,对于更好地分析市场的行情走势,找到有利的入场机很有帮助,以下是一些关键的建议,希望能够供大家参考。 K线有阳线和阴线…

Coze搭建《测测你的本命宠物》

前言 本文讲解如何从零开始,使用扣子平台去搭建《测测你的本命宠物》 《测测你的本命宠物》:测测你的本命宠物 - 扣子 AI Bot (coze.cn) 欢迎大家去体验一下!!! 正文 接下来我们开始讲解制作这个bot的流程吧&#…

rclone 上传资料到 onedrive 遇到限速问题解决

原因分析 可能和脚本参数设置有关系,我的参数是: rclone copy "F:\阿里云盘\6666\局域网" "od:影视" --ignore-existing -u -v -P --transfers20 --ignore-errors --buffer-size128M --check-first --checkers10 --drive-acknowledge-abuse差不多8G大小的…

如何使得Macos的剪切板感知fileURL并当fileURL被执行paste 动作时 回调到某个监听的函数 从而来填充file content

问题及尝试: 我在做一个跨平台文件拷贝的功能,文件可能是从其他操作系统比如Linux 或者Windows 拷贝到Macos上, 但是我试过所有可以hook NSPasteboard的方法,确实没有找到可以监听macos 剪切板的方法,因为fileURL 确实…

邮件接口代码案例中的SMTP服务器配置详解!

邮件接口代码案例的编写技巧?如何集成邮件服务API? 对于开发者来说,邮件接口代码案例提供了丰富的参考和实践机会,其中SMTP服务器配置是不可或缺的一环。AoKSend将详细讲解如何配置SMTP服务器,并解析其中的重要参数和…

【自动化测试】Selenium自动化测试框架 | 相关介绍 | Selenium + Java环境搭建 | 常用API的使用

文章目录 自动化测试一、selenium1.相关介绍1.Selenium IDE2.Webdriverwebdriver的工作原理: 3.selenium Grid 2.Selenium Java环境搭建3.常用API的使用1.定位元素2.操作测试对象3.添加等待4.打印信息5.浏览器的操作6.键盘事件7.鼠标事件8.定位一组元素9.多层框架定…

2024年6月京东睡眠呼吸暂停和低通气事件检测赛题-baseline

赛题地址:DC竞赛-大数据竞赛平台 (datacastle.cn) 一、数据集介绍 train_x训练数据集特征描述,其样本分布不均匀,0样本29808,1样本3221,2样本4520,共计37549条样本 第一维度:60 位受试样本数总…

一个多智能体AI搜索工具

brainstorm.cool 是最近刚留意到的一个小工具,因为好奇去体验了一把,简单写一下使用体验。 初体验 界面比较清爽,检索结果包括Status、多Agent回答、Relates和右侧的Sources。从Status可以大致了解检索过程:Web Search - Decisio…

pythons工具——裁剪labelme的json不规则多边形标签保存成矩形图像

原图labelme标注 使用以下程序,裁剪labelme的json不规则多边形标签保存成矩形图像 import os import cv2 import math import json import numpy as np from PIL import Image, ImageDrawdef calculate_bounding_box(points):"""计算多边形的最小外…

二次封装 el-dialog 实现 全屏和最小化 功能

效果 封装后的组件 <template><el-dialog v-model"dialogVisible" :show-close"false" :fullscreen"fullscreen" draggable overflow><template #header"{ close }"><div><span style"font-weight: b…

图像增强及运算篇之图像掩膜直方图和HS直方图

一.图像掩膜直方图 如果要统计图像的某一部分直方图&#xff0c;就需要使用掩码&#xff08;蒙板&#xff09;来进行计算。假设将要统计的部分设置为白色&#xff0c;其余部分设置为黑色&#xff0c;然后使用该掩膜进行直方图绘制&#xff0c;其完整代码如下所示。 # -*- codi…

OurBMC运营委员会2024年上半年度例会顺利召开

6 月 27 日&#xff0c;OurBMC 社区运营委员会 2024 年上半年度例会顺利召开。本次会议采用线上线下结合的方式&#xff0c;各委员在会上听取了 2024 年上半年社区运营委员会的工作总结汇报&#xff0c;并规划了下半年运营重点工作&#xff0c;同时针对社区活动改进、运营规划开…

【OpenSSH】关于操作系统中的自带的SSH你知道怎么用吗

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、如何开启SSH服务2.1 什么是OpenSSH2.2 对于Windows 10, Windows 11系统2.2.1 如…