STM32的外部中断实现按键控制led灯亮灭(HAL库)

一:stm32外部中断概述

1:stm32的外部中断线


STM32的每个IO都可以作为外部中断输入。
STM32的中断控制器支持19个外部中断/事件请求:
线0~15:对应外部IO口的输入中断。

线16:连接到PVD输出。

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

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

每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位。

2:外部中断线与io引脚对应关系

3:外部中断向量

在STM32中,中断向量表是一个重要的概念,它描述了当中断发生时,程序应该如何跳转到相应的中断处理函数。STM32的中断向量表是在启动文件(通常是startup_stm32.s)中定义的,并且是固化在MCU的内部ROM中的。

在STM32中,中断向量表通常如下所示:

  • 复位向量(Reset Vector): 指向复位中断处理函数的起始地址。

  • 未定义指令中断向量: 指向未定义指令中断处理函数的起始地址。

  • 系统异常中断向量: 指向系统异常中断处理函数(如Prefetch Abort、Data Abort)的起始地址。

  • 中断向量表: 每个中断源对应一个中断向量,指向该中断源的中断处理函数的起始地址。

  • NVIC中断向量表: 如果使用了Nested Vectored Interrupt Controller (NVIC),则会有额外的中断向量用于处理NVIC相关的中断。

二:流程分析

        实验目的 :按下按键一次将led灯电平翻转完成亮灭控制        

        实现流程:·创建工程 -> 配置led引脚 ->配置按键引脚 ->配置中断->生成工程->完成代码编写

第一步:

三:工程创建

        1: 打开stm32cubemx

         2:选择芯片型号

                

         3: 配置调试接口

      

        4:选择led灯对应引脚

因为用的板子是飞线的方式来连接led所以可以随意选择io口,如果用的是成品板就要看板子上的led灯连接的是哪个io口进行相应的配置

                

 

        5:选择按键对应引脚

        

 

 

 

6:创建工程 

 

四:代码实践

        1:打开工程

        2:找到gpio相关库函数里面的中断回调函数复制原型到main函数

        3:编写触发中断要产生的现象:翻转led灯引脚电平

        4:主函数不需要进行操作 直接编译  点击两个其中一个都可以

        5:烧入代码

选择isp 或者 仿真器下载

 

        6:实验现象

                烧入代码后程序默认led灯点亮

                

点击按键触发中断后led灯熄灭

 

 

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

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

相关文章

从零开始:神经网络(1)——什么是人工神经网络

声明:本文章是根据网上资料,加上自己整理和理解而成,仅为记录自己学习的点点滴滴。可能有错误,欢迎大家指正。 人工神经网络(Artificial Neural Network,简称ANN)是一种模仿生物神经网络结构和功…

jenkins集成allure测试报告

1.allure插件安装 (1)点击首页的【Manage Jenkins】-【Manage Plugins】 (2)选择【Available】选项,搜索输入框输入Allure,搜索出来的名字就叫Allure,当安装后名字会变为Allure Jenkins Plugi…

【MySQL】Ubuntu22.04 安装 MySQL8 数据库详解

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》《MySQL》《Qt》 ❤️感谢大家点赞👍收藏⭐评论✍️ 一、安装目录 1.1 更新软件源 sheepAron:/root$ sudo apt update1.2 安装mysql_ser…

《0基础》学习Python——第十九讲__爬虫/<2>

一、用get请求爬取一般网页 首先由上节课我们可以找到URL、请求方式、User-Agent以及content-type 即:在所在浏览器页面按下F12键,之后点击网路-刷新,找到第一条双击打开标头即可查看上述所有内容,将上述URL、User-Agent所对应的…

Vue3--

一、pinia (集中式状态(数据)管理) 1、准备一个效果 2、存储读取数据 3、修改数据三种方式 4、storeToRefs 5、getters 当state中的数据,需要经过处理后在使用时,可以使用getters配置 6、$subscribe的使用…

基于FPGA的YOLOV5s神经网络硬件部署

一 YOLOV5s 本设计以YOLOV5s部署于FPGA上为例进行分析概述。YOLOV5s网络主要包括backbone、neck、head三部分。 涉及的关键算子: Conv:卷积,包括3*3、1*1,stride1/2Concat:Upsample:Pooling:ADD 二 评估 …

独立开发者系列(32)——node开发周边命令

Node环境的本地代码实现了实时开发实时看到效果,但是node在各种情况下,经常容易报错。主要是各种依赖包和环境问题,这个是比较折腾人的。这里将各种常用命令行和开发进行一个整理。 命令行就是我们最常用的winR执行,打开的黑乎乎的窗口。 命…

P4-AI产品经理-九五小庞

从0开始做AI产品的完整工作方法 项目启动 项目实施 样本测试模型推荐引擎 构建DMP(数据管理平台) 项目上线

React 学习——行内样式、外部样式、动态样式

三种样式的写法 import "./index.css"; //同级目录下的样式文件 function App() {const styleCol {color: green,fontSize: 40px}// 动态样式const isBlock false;return (<div className"App">{/* 行内样式 */}<span style{{color:red,fontSiz…

【区块链 + 智慧政务】山东荣成:区块链政务诚信管理系统 | FISCO BCOS应用案例

2018 年 9 月&#xff0c;荣成市政府与山东观海数据技术有限公司合作&#xff0c;基于 FISCO BCOS 区块链技术推动智慧城市建设&#xff0c; 其中&#xff0c;信用管理是智慧城市核心之一。 荣成市区块链政务诚信管理系统&#xff0c;建设信用信息征集、评价、披露和应用于一体…

PY32F071单片机,主频最高72兆,资源丰富,有USB,DAC,运放

PY32F071 系列单片机是基于32 位 ARM Cortex-M0 内核的微控制器&#xff0c;宽电压工作范围的 MCU。芯片嵌入高达 128 Kbytes flash 和 16 Kbytes SRAM 存储器&#xff0c;最高72 MHz工作频率。芯片支持串行调试 (SWD)。PY32F071单片机提供了包含了HAL和LL两种不同层次的驱动库…

Qt SQLite数据库学习总结

到此为止&#xff0c;就使用Qt进行SQLite数据库的操作&#xff0c;做一次总结 1. Qt中数据库操作的相关概念和类 Qt 数据库编程相关基本概念https://blog.csdn.net/castlooo/article/details/140497177 2.表的只读查询--QSqlQueryModel QSqlQueryModel单表查询的使用总结htt…

力扣35题 二分查找(简单易懂)

力扣35题二分查找升级版讲解 文章目录 力扣35题二分查找升级版讲解一、题目描述二、思路第一种方法当然可以遍历 我们这里不做讲解二分查找 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、题目描述 给定一个排序数组和一个目标值&#xff0c…

BGP选路之Local Preference

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时&#xff0c;BGP协议会对这些BGP路由的属性进行比较&#xff0c;以确定去往该目标网络的最优BGP路由。BGP首先比较的是路由信息的首选值&#xff08;PrefVal)&#xff0c;如果 PrefVal相同&#xff0c;就会比较本…

数据结构初阶(C语言)-二叉树-顺序表建堆

一&#xff0c;堆的概念与结构 如果有⼀个关键码的集合&#xff0c;把它的所有元素按完全⼆叉树的顺序存储方式存储&#xff0c;在⼀个⼀维数组中&#xff0c;并满足&#xff1a;&#xff0c;i0,1,2...则称为小堆(或⼤堆)。将根结点最大的堆叫做最大堆或大根堆&#xff0c;根结…

Python爬虫实战案例(爬取图片)

爬取图片的信息 爬取图片与爬取文本内容相似&#xff0c;只是需要加上图片的url&#xff0c;并且在查找图片位置的时候需要带上图片的属性。 这里选取了一个4K高清的壁纸网站&#xff08;彼岸壁纸https://pic.netbian.com&#xff09;进行爬取。 具体步骤如下&#xff1a; …

Unity ShaderLab基础

[原文1] [参考2] 一 基础知识 1. 1 着色器语言分类: 语言说明HLSL基于 OpenGL 的 OpenGL Shading LanguageGLSL基于 DirectX 的 High Level Shading LanguageCGNVIDIA 公司的 C for GraphicShader LabUnity封装了CG,HLSL,GLSL的Unity专用着色器语言,具有跨平台,图形化编程,便…

Java面试八股之Spring boot的自动配置原理

Spring boot的自动配置原理 Spring Boot 的自动配置原理是其最吸引人的特性之一&#xff0c;它大大简化了基于 Spring 框架的应用程序开发。以下是 Spring Boot 自动配置的基本原理和工作流程&#xff1a; 1. 启动类上的注解 Spring Boot 应用通常会在主类上使用 SpringBoot…

react中路由跳转以及路由传参

一、路由跳转 1.安装插件 npm install react-router-dom 2.路由配置 路由配置&#xff1a;react中简单的配置路由-CSDN博客 3.实现代码 // src/page/index/index.js// 引入 import { Link, useNavigate } from "react-router-dom";function IndexPage() {const …

elasticsearch-7.3.1安装注意事项

elasticsearch-7.3.1安装注意事项 一、背景二、步骤1、查看原ES版本2、新环境服务器2.1、是否有elasticsearch2.2、安装elasticsearch2.3、配置参数2.4、启动elasticsearch2.5、设置密码 三、报错-问题总结1、jdk不适用2、bootstrap checks failed3、Address already in use4、…