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

news2024/7/31 5:41:49

目录

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.coloradmin.cn/o/1873055.html

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

相关文章

【机器学习】在【PyCharm中的学习】:从【基础到进阶的全面指南】

目录 第一步:基础准备 1.1 Python基础 1.1.1 学习Python的基本语法 变量和数据类型: 1.1.2 控制流 条件语句: 循环语句: 1.1.3 函数和模块 函数: 模块: 1.2 安装PyCharm 1.2.1 下载并安装 第二…

听说网络安全行业是IT行业最后的红利?

前言 2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展,一些趋势和发展可能对2023年网络安全行业产生影响: 5G技术的广泛应用:5G技术的普及将会使互联网的速度更快,同时也将带来更多的网络威胁和安全挑战。网络安全…

tr、cut、split、grep -E

目录 tr命令:替换和删除 cut命令:快速裁剪 split命令:文件拆分 文件合并 面试题 1.现在有一个日志文件,有5个G,能不能快速的打开 2.cat合并和paste合并之间的区别? 3.统计当前主机的连接状态&#…

初学51单片机之长短键应用定时炸弹及扩展应用

51单片机RAM区域划分 51单片机的RAM分为两个部分,一块是片内RAM,一块是片外RAM。 data: 片内RAM从 0x00 ~0x7F 寻址范围(0-127) 容量共128B idata: 片外RAM从 0x00~0xFF 寻址范围(0-255) 容量共256B pdata&am…

总结一下Linux、Windows、Ubuntu、Debian、CentOS等到底是啥?及它们的区别是什么

小朋友你总是有很多问好 你是否跟我一样,不是计算机科班出身,很多东西都是拿着在用,并不知道为什么,或者对于它们的概念也是稀里糊涂的,比如今天说的这个。先简单描述下,我先前的疑问: Linux是…

爬取电商商品详情数据的经验分享(数据已封装API可调用)

一、引言 随着电子商务的蓬勃发展,商品详情数据成为了商家、数据分析师和研究者们关注的焦点。这些数据不仅可以帮助商家了解市场趋势、优化产品策略,还能为研究者提供丰富的数据源,以支持各种学术研究。然而,获取这些数据的难度…

鸿蒙开发设备管理:【@ohos.brightness (屏幕亮度)】

屏幕亮度 该模块提供屏幕亮度的设置接口。 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import brightness from ohos.brightness;brightness.setValue setValue(value: number):…

如何快捷批量处理图片?图片批量改大小、格式、尺寸的方法

怎么把图片批量修改成同一尺寸呢?图片在日常工作和生活中有很多的用途,每天都会需要使用不同类型的图片来获取我们需要的内容。在使用图片的时候,经常会遇到比较常见的几个限制问题,比如图片大小、图片尺寸、图片格式等&#xff0…

【深度学习】图形模型基础(1):使用潜在变量模型进行数据分析的box循环

1.绪论 探索数据背后的隐藏规律,这不仅是数据分析的艺术,更是概率模型展现其威力的舞台。在这一过程中,潜在变量模型尤为关键,它成为了数据驱动问题解决的核心引擎。潜在变量模型的基本理念在于,那些看似复杂、杂乱无…

U-Net for text-to-image

1. Unet for text-to-image 笔记来源: 1.hkproj/pytorch-stable-diffusion 2.understanding u-net a comprehensive tutorial 3.Deep Dive into Self-Attention by Hand 4.Towards Understanding Cross and Self-Attention in Stable Diffusion for Text-Guided Im…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 英文单词联想(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…

使用uniapp编写微信小程序

使用uniapp编写微信小程序 文章目录 使用uniapp编写微信小程序前言一、项目搭建1.1 创建项目方式1.1.1 HBuilderX工具创建1.1.2 命令行下载1.1.3 直接Gitee下载 1.2 项目文件解构1.2.1 安装依赖1.2.2 项目启动1.2.3 文件结构释义 1.2 引入uni-ui介绍 二、拓展2.1 uni-app使用uc…

CVPR 2024最佳论文分享:生成图像动力学

CVPR 2024最佳论文分享:生成图像动力学 CVPR(Conference on Computer Vision and Pattern Recognition)是计算机视觉领域最有影响力的会议之一,主要方向包括图像和视频处理、目标检测与识别、三维视觉等。近期,CVPR 2…

盘点7款适合团队使用的知识库工具

作为一名技术爱好者和企业管理者,我深知知识库工具在日常工作中的重要性。 无论是个人笔记管理还是企业知识共享,知识库工具都能极大地提升我们的工作效率和信息管理水平。 根据麦肯锡全球研究院报告显示,使用知识库工具可以帮助个人或者企…

JavaWeb-day28_HTML

今日内容 零、 复习昨日 一、HTML 零、 复习昨日 一、Web开发 前端三大件 HTML ,页面展现CSS , 样式JS (JavaScript) , 动起来 二、HTML 2.1 HTML概念 ​ 网页,是网站中的一个页面,通常是网页是构成网站的基本元素,是承载各种网站应用的平台…

普乐蛙景区9d电影体验馆商场影院娱乐设备旋转飞行影院

今天与大家聊聊VR娱乐新潮流,我们普乐蛙的新品——旋转飞行影院!裸眼7D环幕影院,话不多说上产品!我们通过亲身体验来给大家讲讲这款高性价比新品的亮点。 想象一下走上电动伸缩梯,坐进动感舱,舱门缓缓合上&…

RuoYi_Cloud本地搭建

目录 1.先进入若依官网下载源码 2.在git链接在idea本地打开 3.建立数据库 (1)创建一个ruoyi_cloud数据库,设定好账号密码 (2)建表 4.配置nacos (1)nacos官网下载2.0.x以上的版本 &#…

Java常量、变量、成员内部类

文章目录 1.常量2.变量3.成员内部类4.变动 1.常量 实例常量:只用final修饰,是某个具体类的实例 静态常量:finalstatic修饰,属于类,所有实例共享同一个类常量 2.变量 实例变量(成员变量):定义在类内部但在…

上海App开发测试需要注意的内容

在上海app开发中,测试发挥着至关重要的作用。及时、专业的对app进行测试,能够快速发现app存在的漏洞与问题,从而及时进行修正,确保app的顺利上线与发布。那么,在上海app开发测试的过程中,需要注意哪些内容呢…

1.驱动程序框架

驱动是用来控制和操作硬件的软件。 在linux下,一切皆文件。当我们write一个文件时,内核通过文件的file_operations结构体(include/linux/fs.h)来找到对应的驱动函数,最终调用的是存储介质(ssd,硬盘等)驱动提供的write函数(这中间…