STM32G030LED闪烁以及流水灯实验文档

实验文档:STM32G030C8TX开发案例

案例1:单个LED灯(D7黄灯)闪烁

1. 需求和原理分析

需求:

控制一个LED灯(D7黄灯)在固定时间间隔内闪烁。

原理分析:
  • 利用STM32G030C8TX的GPIO引脚来控制LED灯的亮灭。
  • 通过定时器或延时函数实现LED灯的周期性闪烁。

2. STM32CubeMX配置流程

2.1 创建新工程
  1. 打开STM32CubeMX,选择STM32G030C8TX微控制器。
  2. 配置时钟源:选择内部时钟或外部晶振。(此处无需配置,默认即可)
  3. 配置引脚:将PB2引脚配置为GPIO_Output模式,对应LED2(D7黄灯)。
2.2 配置步骤
  1. 打开STM32CubeMX,选择新项目并选择STM32G030C8TX微控制器。

image.png

  1. 配置时钟:选择“RCC”模块,并启用所需的时钟源。(默认即可)
  2. 配置引脚:选择“GPIO”模块,将PB2引脚配置为“GPIO_Output”。

image.png
image.png

  1. 点击“Project”标签,填写项目名称并选择工具链(Keil5)。

image.png
image.png

  1. 点击“Generate Code”生成初始化代码。

3. Keil5关键函数开发流程以及解释

3.1 主函数及初始化
#include "main.h"

// 初始化GPIO引脚
void SystemClock_Config(void);
static void MX_GPIO_Init(void);

int main(void)
{
  // 初始化HAL库
  HAL_Init();


  // 配置系统时钟
  SystemClock_Config();


  // 初始化所有配置的外设
  MX_GPIO_Init();

  // 主循环
  while (1)
  {
    // 单灯LED黄灯闪烁
    HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
    HAL_Delay(1000);
  }
}

// 系统时钟配置函数
void SystemClock_Config(void)
{
  // 默认生成的时钟配置代码
}

// GPIO初始化函数
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  // 启用GPIOB时钟
  __HAL_RCC_GPIOB_CLK_ENABLE();

  // 配置PB2引脚为输出模式
  GPIO_InitStruct.Pin = GPIO_PIN_2;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
3.2 代码解释
  • HAL_GPIO_TogglePin:切换GPIO引脚的电平高低,从而控制LED的亮灭。
  • HAL_Delay:延时函数,实现LED的闪烁效果。
  • SystemClock_ConfigMX_GPIO_Init:初始化系统时钟和GPIO引脚。

4. 实验现象

D7黄灯(PB2)以1秒的间隔闪烁。


案例2:3个灯的流水灯(D10绿灯,D9蓝灯,D7黄灯)

1. 需求和原理分析

需求:

控制三个LED灯(D10绿灯,D9蓝灯,D7黄灯)依次亮灭,形成流水灯效果。

原理分析:
  • 利用STM32G030C8TX的多个GPIO引脚来控制多个LED灯的亮灭。
  • 通过延时函数实现LED灯的依次点亮和熄灭,形成流水灯效果。

2. STM32CubeMX配置流程

2.1 创建新工程
  1. 打开STM32CubeMX,选择STM32G030C8TX微控制器。
  2. 配置时钟源:选择内部时钟或外部晶振。(此处无需配置,默认即可)
  3. 配置引脚:将PB0、PB1、PB2引脚分别配置为GPIO_Output模式,对应D10绿灯(LED4),D9蓝灯(LED3),D7黄灯(LED2)。
2.2 配置步骤
  1. 打开STM32CubeMX,选择新项目并选择STM32G030C8TX微控制器。

image.png

  1. 配置时钟:选择“RCC”模块,并启用所需的时钟源。(默认即可)
  2. 配置引脚:选择“GPIO”模块,将PB0、PB1、PB2引脚配置为“GPIO_Output”。

image.png
image.png

  1. 点击“Project”标签,填写项目名称并选择工具链(Keil5)。

image.png
image.png

  1. 点击“Generate Code”生成初始化代码。

3. Keil5关键函数开发流程以及解释

3.1 主函数及初始化
#include "main.h"

// 初始化GPIO引脚
void SystemClock_Config(void);
static void MX_GPIO_Init(void);

int main(void)
{
  // 初始化HAL库
  HAL_Init();


  // 配置系统时钟
  SystemClock_Config();


  // 初始化所有配置的外设
  MX_GPIO_Init();

  // 主循环
  while (1)
  {
    // 流水灯效果
    HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_RESET); // 点亮D10绿灯
    HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET); // 熄灭D9蓝灯
    HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET); // 熄灭D7黄灯
    HAL_Delay(1000);

    HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_SET); // 熄灭D10绿灯
    HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET); // 点亮D9蓝灯
    HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET); // 熄灭D7黄灯
    HAL_Delay(1000);

    HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_SET); // 熄灭D10绿灯
    HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET); // 熄灭D9蓝灯
    HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); // 点亮D7黄灯
    HAL_Delay(1000);
  }
}

// 系统时钟配置函数
void SystemClock_Config(void)
{
  // 默认生成的时钟配置代码
}

// GPIO初始化函数
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  // 启用GPIOB时钟
  __HAL_RCC_GPIOB_CLK_ENABLE();

  // 配置PB0引脚为输出模式
  GPIO_InitStruct.Pin = GPIO_PIN_0;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  // 配置PB1引脚为输出模式
  GPIO_InitStruct.Pin = GPIO_PIN_1;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  // 配置PB2引脚为输出模式
  GPIO_InitStruct.Pin = GPIO_PIN_2;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
3.2 代码解释
  • HAL_GPIO_WritePin:控制GPIO引脚的电平高低,从而控制LED的亮灭。
  • HAL_Delay:延时函数,实现LED的依次点亮和熄灭效果。
  • SystemClock_ConfigMX_GPIO_Init:初始化系统时钟和GPIO引脚。

4. 实验现象

D10绿灯(PB0)、D9蓝灯(PB1)和D7黄灯(PB2)依次点亮和熄灭,形成流水灯效果。每个灯以1秒的间隔亮灭。
STM32_LED_flashing_experiment_video.MP4
STM32G030LED闪烁以及流水灯实验视频

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值