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.mzph.cn/news/227936.shtml

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

相关文章

LeetCode 每日一题 2023/12/11-2023/12/17

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 12/11 1631. 最小体力消耗路径12/12 2454. 下一个更大元素 IV12/13 2697. 字典序最小回文串12/14 2132. 用邮票贴满网格图12/15 2415. 反转二叉树的奇数层12/16 2276. 统计…

写好ChatGPT提示词原则之:清晰且具体(clear specific)

ChatGPT 的优势在于它允许用户跨越机器学习和深度学习的复杂门槛,直接利用已经训练好的模型。然而,即便是这些先进的大型语言模型也面临着上下文理解和模型固有局限性的挑战。为了最大化这些大型语言模型(LLM)的潜力,关…

linux远程登录

标题: Linux远程登录: 实现远程管理和访问的有效工具 摘要: 本文将介绍Linux系统中的远程登录功能,探索实现远程管理和访问的有效工具和技术。通过远程登录,用户可以方便地管理远程服务器、执行命令和访问文件。本文将讨论SSH、VNC和Web远程登录等常见的…

Spring 6(二)【IOC原理】

前言 1、IOC IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。 1.1、控制反转 控制反转不是技术…

复杂指针的声明

一个整型数 int a; 一个指向整型数的指针 int *a; 一个指向指针的指针,它指向的指针是指向一个整型数的 int **a; 一个有10个整型数的数组 int a[10]; 一个有10个指针的数组,该指针是指向一个整型数的 int *a[10]; 一个指向有10个整型数数组的…

常见编码方式

文章目录 讲一下常见编码方式?ASCII 码:ISO-8859-1,GB2312:GBKUTF-16:UnicodeUTF-8: 今天我们来谈谈常见的编码 讲一下常见编码方式? 编码的意义:计算机中存储的最小单元是一个字节即 8bit,所能表示的字符…

visual Studio MFC 平台实现图片的傅里叶变换

图片的傅里叶变换 本文主要讲解傅里叶变换的基本数学概念与物理概念,并本文使用visual Studio MFC 平台实现对傅里叶变换在图片上进行了应用。 一、傅里叶变换的原理 在这里推荐一篇讲得非常形象的文章通俗讲解:图像傅里叶变换 1.1 傅里叶变换原理的说明…

Andriod逆向--让APP自己吐出Token

0. 抓包?Or 修改APP? 安卓APP本质上就是发送URL+一堆参数的一个客户端而已,而其中一般有两个重要的参数:TOKEN(标识用户的唯一性),另一个是防止逆向而设计的一个参数(往往由其它参数通过一个算法算出)。 今天我们的目的就是抓到TOKEN,如果可以抓包,那就是简单了。…

idea__SpringBoot微服务11——整合Druid数据源(新依赖)(新注解)

整合JDBC 一、导入依赖二、配置Druid————————创作不易,如觉不错,随手点赞,关注,收藏(* ̄︶ ̄),谢谢~~ 接着 第10的 新注解: ConfigurationProperties ConfigurationPropert…

Kafka-生产调优

Kafka生产调优实践 通常在生产环境中,Kafka都是用来应对整个项目中最高峰的流量 搭建Kafka监控平台 生产环境通常会对Kafka搭建监控平台。而Kafka-eagle就是一个可以监控Kafka集群整体运行情况的框架,在生产环境经常会用到。官网地址:EFAK…

redis底层数据结构之skiplist实现

skiplist实现 skiplist跳跃表,是一种有序数据结构,通过在每个节点中维持多个指向其他节点的指针,来达到快速访问节点的目的,redis使用skiplist作为zsort的底层实现之一 结构很像树形结构 typedef struct zskiplistNode { // 对象…

【人工智能】实验四:遗传算法求函数最大值实验与基础知识

实验四:遗传算法求函数最大值实验 实验目的 熟悉和掌握遗传算法的原理、流程和编码策略,并利用遗传算法求解函数优化问题,理解求解流程并测试主要参数对结果的影响。 实验内容 采用遗传算法求解函数最大值。 实验要求 1. 用遗传算法求解…

3. cgal 示例 GIS (Geographic Information System)

GIS (Geographic Information System) 地理信息系统 原文地址: https://doc.cgal.org/latest/Manual/tuto_gis.html GIS 应用中使用的许多传感器(例如激光雷达)都会生成密集的点云。此类应用程序通常利用更先进的数据结构:例如,不…

053:vue工具--- 英文字母大小写在线转换

第047个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

QEMU源码全解析 —— virtio(13)

接前一篇文章: 通过前文书(从QEMU源码全解析 —— virtio(9)开始)对整个流程以及各个相关函数的解析,可以看到从virtio PCI代理设备的具现化到virtio设备的具现化过程。但前述分析还遗漏了一部分&#xff0…

LeetCode(69)对称二叉树【二叉树】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 对称二叉树 1.题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,nu…

朱卫明:从韶关走向世界的创作型歌手

朱卫明,艺名Aming,是一位来自广东韶关的杰出唱作音乐人。他以其独特的创作才华和深情的嗓音,赢得了众多歌迷的喜爱。作为一名创作型歌手,朱卫明用音乐传递情感,用歌声打动人心。 一、早年经历与音乐启蒙 朱卫明出生于…

Python开发工具PyCharm v2023.3全新发布——全面推出AI Assistant工具

JetBrains PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外,该IDE提供了一些高级功能,以用于Django框架下的专业Web开发。 PyCharm v2023.3正式版下载 在 PyCharm 2023.3 中,每…

Linux Shell——输入输出重定向

输入输出重定向 1. 重定向输入2. 重定向输出 总结 最近学习了shell语法,总结一下关于输入输出重定向的知识。 一般情况下,linux每次执行命令其实都会打开三个文件,分别是: 标准输入stdin 文件描述符为0 标准输出stdout 文件描述符…

Text2SQL学习整理(一) 综述

数据库由一张或多张表格构成,表格之间的关系通过共同的列(外键)关联,人们使用数据库来方便的记录和存储信息。SQL是广泛应用的关系型数据库查询语言,但是对于普通用户而言,编写SQL语句有一定的难度。 Text…