STM32G030C8T6:使用按键控制LED亮灭(外部中断)

本专栏记录STM32开发各个功能的详细过程,方便自己后续查看,当然也供正在入门STM32单片机的兄弟们参考;

本小节的目标是,系统主频64 MHZ,采用高速外部晶振,通过KEY1 按键的PA0 引脚配置成中断输入引脚,PB9引脚配置成输出,每次按键,PA0 引脚就会进入一次外部中断,每进入一次中断服务程序,改变PB9 输出电平的高低,从而实现LED 灯的亮灭。
原理:通过KEY1按键的PA0引脚配置成中断输入引脚,PB9引脚配置成输出,每次按键,PA0引脚就会进入一次外部中断,每进入一次中断服务程序,改变PB9输出电平的高低,从而实现LED灯的亮灭。
涉及到的知识:GPIO外部中断输入,配置GPIO为输出引脚,STM32CubeMX的使用
我是将PB9引脚接的LED,所以本小节是以PB9为例记录的,如果需要将其他引脚配置为LED灯,那将PB4改为其他对应的引脚即可;

文章目录

  • 1 新建工程
  • 2 配置SWD下载引脚
  • 3 配置GPIO输出
  • 4 配置RCC
  • 5 设置系统主频
  • 6 配置按键外部中断
  • 7 外部中断使能
  • 8 生成工程
  • 9 增加代码实现按键控制LED

1 新建工程

点击File 菜单下的New Project

在这里插入图片描述

选择芯片型号,如下图所示先输入芯片型号,目前这边输入STM32G030C8,

在这里插入图片描述

双击选择,就确定了芯片型号,界面会变成如下图所示

在这里插入图片描述

2 配置SWD下载引脚

如下图所示,在Pinout&Configuration 栏目的System Core 下,先点击SYS,再勾选Serial Wire 框,
配置好SWD 下载引脚设置:

在这里插入图片描述

3 配置GPIO输出

按下图 的1,2,3 步骤完成PB4 引脚配置成GPIO 输出设置:

在这里插入图片描述

配置成功后如下图所示:
在这里插入图片描述

4 配置RCC

如下图,先点击RCC,在HSE 配置中选择Crystal/Ceramic Resonator 外部晶振设

在这里插入图片描述

5 设置系统主频

如下图, 先点击Clock Configuration 栏目,按下图的1,2,3,4 步骤完成系统64MHZ 主频设置:

在这里插入图片描述

6 配置按键外部中断

如下图的1,2步骤完成PA0引脚配置成GPIO 外部中断输入设置:
在这里插入图片描述

如下图1,2,3,4 步骤完成PA0 中断触发沿以及上下拉配置:
在这里插入图片描述

都配置完成后,如下图所示:

在这里插入图片描述

7 外部中断使能

如下图 的1,2 步骤完成外部中断使能配置,这样PC13 引脚电平有变化就会产生中断了。

在这里插入图片描述

8 生成工程

按照下图的步骤,进行项目配置,项目名称和路径设置等,生成项目的类型选择STM32CubeIDE(我这里以STM32CubeIDE为例,如果你要试用keil5,那就选择MDK-RAM,如果要使用makefile,就选择Makefile),注意项目名称和路径不要有中文名;
在这里插入图片描述

最后全部设置完毕后点击create code,生成项目代码:

在这里插入图片描述

生成的工程如下图所示:
在这里插入图片描述

9 增加代码实现按键控制LED

增加代码实现PA0 引脚进入一次外部中断,改变PB9 输出电平的高低

点击上一步生成的.project文件,会打开STM32CubeIDE,然后在stm32g0xx.it.c中,找到外部中断服务程序,如下图所示:

在这里插入图片描述

然后,在外部中断服务程序中调用的HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0)内
部,找到HAL_GPIO_EXTI_Rising_Callback 这个上升沿回调函数,如下图所示:

在这里插入图片描述
加入PB9 翻转输出就可以:

 HAL_GPIO_Togglepin(GPIOB,GPIO_PIN_9);//每次进入一次外部中断,实现PB9引脚翻转输出一次

在这里插入图片描述

至此,编译并调试,即可成功案件控制LED开关;

当程序开始后,LED灯是亮着的,按下按键,LED会变灭,再次按下按键,LED会点亮;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SSH的交互原理(wireshark的分析)

SSH的交换原理(wireshark篇) 首先要想了解ssh的交换原理,必须要先了解他的加密方式,他的加密方式是对称加密,和公钥加密。什么意思呢? 首先我们向服务器发送一个请求,然后服务器会发给我们他的…

【Linux】进程周边006之进程地址空间

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.程序地址空间 1.1验证地址…

LeetCode 每日一题 Day 17 || 二分

1901. 寻找峰值 II 一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。 给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 mat[i][j] 并 返回其位置 [i,j] 。 你可以假设整个矩阵周…

怎么检测DC-DC电源模块稳定性?电源测试系统测试有什么优势?

DC-DC电源模块稳定性测试 稳定性是衡量DC电源模块的重要指标,电源模块的稳定性直接影响着电源产品和设备的工作稳定性。DC-DC电源模块的稳定性,可以通过检测输出电压、输出电流、负载、波形、效率等参数来评估。 1. 静态测试方法 静态测试是通过直流电压…

sparksql介绍

1.1 SparkSQL介绍 SparkSQL,顾名思义,就是Spark生态体系中的构建在SparkCore基础之上的一个基于SQL的计算模块。 SparkSQL的前身不叫SparkSQL,而叫Shark,最开始的时候底层代码优化,sql的解析、执行引擎等等完全基于H…

基于ssm酒店客房管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本酒店客房管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(五)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型(一) 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

seaborn库图形进行数据分析(基于tips数据集)

目录 一、相关性 二、变量分析 三、统计数 四、 特征值分布 五、多变量 Seaborn 是一个基于 matplotlib 的数据可视化库,可以用来绘制各种统计图表,包括散点图、条形图、折线图、箱线图等。Seaborn 提供了一些用于美化图表的默认样式和颜色主题&am…

macOS 安装 oh-my-zsh 后 node 报错 command not found : node

最近为了让终端中显示 git 分支的名称,安装了 oh-my-zsh ,安装之后呢,我原先安装的 Volta、 node 都没法用了,报错如下: 这时候粗略判断应该是系统变量出了问题,oh-my-zsh 的变量文件是 ~/.zshrc&#xff0…

旅游景区项目信息化建设运营方案:PPT47页,附下载

关键词:智慧景区解决方案,智慧景区建设,智慧景区开发与管理,智慧景区建设的意义,智慧景区管理 一、旅游景区项目信息化建设背景 1、旅游业发展迅速:随着旅游业的不断发展,游客对旅游体验的需求…

简历摘要:它是什么、为什么重要以及如何编写

然而,在这里,你有绝佳的机会用自己的语言总结你最伟大的职业品质——就像用文字创作一幅自画像一样。如果做得好,你的简历摘要可以让你的简历引人注目,立即引起招聘经理的注意。但如果做得不好,可能会立即让人倒胃口。…

排序嘉年华———快速排序优化版和非递归思想

文章目录 一.单趟排序的优化1.“挖坑法”排序2.双指针法 二.递归次数的缩减优化三.非递归方式的快排 一.单趟排序的优化 在之前文章中介绍过,霍尔大佬的单趟排序,虽然思想很厉害,但存在许多坑点,比如While循环内条件判定的繁琐&a…

延迟消息队列的几种实现方案,哪种更适合业务,要看具体情况分析

延迟消息队列的几种实现方案,延迟消息怎么实现,很多人可能一想到的是rabbitmq的死信队列来实现,但是一旦引入mq的话,就依赖这个中间件,另外维护成本,开发成本都很大,那有么有简单点的实现方式呢…

基于蓝牙传输的PM2.5测量仪(论文+源码)

1. 系统设计 当前人们对家居环境的要求越来越高,因此本课题设计了一款基于蓝牙传输的PM2.5测量仪,在功能上设计如下: 可以实时检测当前环境的PM2.5浓度;检测的PM2.5浓度可以在液晶上进行显示;检测的参数可以通过蓝牙传…

微信小程序开发从零到壹(持续更新)

1、注册或者登录到微信小程序; 小程序 补充小程序的基本信息,如名称、图标、描述等 补充小程序的服务类目,设置主营类目 AppID(小程序ID): wx710efeb42778d131 AppSecret(小程序密钥): d12a7e2b135593f6fxxxxbe35666 2…

关于“Python”的核心知识点整理大全30

目录 12.2.3 在 OS X 系统中安装 Pygame 12.2.4 在 Windows 系统中安装 Pygame 12.3 开始游戏项目 12.3.1 创建 Pygame 窗口以及响应用户输入 首先,我们创建一个空的Pygame窗口。使用Pygame编写的游戏的基本结构如下: alien_invasion.py 12.3.2 设…

电子科大软件测试~第一次作业

第一次作业及参考答案 第一题 针对电子科技大学信息门户的“密码找回”界面的邮箱输入域进行验证, 采用等价划分法设计相应的测试用例,包括尽量多的无效等价类。 答: 有效等价类如下: (1)邮箱输入学符串格式***uestc.edu.cn或***UESTC.ED…

引入sortablejs插件实现表格列拖拽功能的封装

1 参考其他文章 VueElementUI 实现 动态调整表格列 显示隐藏&显示顺序 2 具体实现 2.1 将列拖拽功能封装到通用表格动态列组件里 关于表格动态列组件的具体代码,可以看我的另一篇博客:Vue - 基于Element UI封装一个表格动态列组件。 2.2 实现思…

linux中deadline调度原理与代码注释

简介 deadline调度是比rt调度更高优先级的调度,它没有依赖于优先级的概念,而是给了每个实时任务一定的调度时间,这样的好处是:使多个实时任务场景的时间分配更合理,不让一些实时任务因为优先级低而饿死。deadline调度…

openGauss学习笔记-165 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-通过本地文件导入导出数据

文章目录 openGauss学习笔记-165 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-通过本地文件导入导出数据165.1 示例1:通过本地文件导入导出数据 openGauss学习笔记-165 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导…
最新文章