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 新建工程](#1 新建工程)
  • [2 配置SWD下载引脚](#2 配置SWD下载引脚)
  • [3 配置GPIO输出](#3 配置GPIO输出)
  • [4 配置RCC](#4 配置RCC)
  • [5 设置系统主频](#5 设置系统主频)
  • [6 配置按键外部中断](#6 配置按键外部中断)
  • [7 外部中断使能](#7 外部中断使能)
  • [8 生成工程](#8 生成工程)
  • [9 增加代码实现按键控制LED](#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 翻转输出就可以:

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

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

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

相关推荐
Zw-awa2 小时前
让屏幕动起来:OLED动画效果,丝滑光标、帧动画和一只贪吃蛇
stm32
橘为己有4418 小时前
51单片机:定时/计数器
单片机·51单片机
杯子不吃紫菜11 小时前
LangGraph 体系实战(下):中断恢复、流式、子图与设计模式
单片机·嵌入式硬件·设计模式
qq_4480111611 小时前
中断服务函数简介
嵌入式硬件
Risehuxyc11 小时前
STM32程序逻辑---入口函数逻辑和NVIC嵌套向量中断控制器初始化
stm32·单片机·嵌入式硬件
【 STM32开发 】11 小时前
CubeMX+STM32】SD卡U盘实现__USB+FATFS (F103 篇)
stm32·单片机·嵌入式硬件
jianqiang.xue12 小时前
3倍向量算力:Arm给最小MCU装上本地AI
arm开发·人工智能·单片机
蜀黍@猿13 小时前
ARM 汇编入门(十二):MMU、页表与虚拟内存全解析
汇编·arm开发·stm32·mcu
无敌最俊朗-1 天前
【电感专题2:电感的感抗、电路的阻抗、电流的滞后】
单片机·嵌入式硬件·元器件·电感
wuyk5551 天前
嵌入式故障诊断-Bug002-局部大数组压栈高温必死机
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机·嵌入式实时数据库