【HAL库】STM32CubeMX开发----STM32F407----LED灯实验

本文详细介绍如何使用STM32CubeMX和Keil5进行STM32F407VET6芯片的开发,实现LED跑马灯实验。包括STM32CubeMX的工程创建、配置及代码生成,Keil5环境下代码编辑和调试,最终完成LED灯依次闪烁的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32CubeMX 下载和安装 详细教程
【HAL库】STM32CubeMX开发----STM32F407----目录
【HAL库】STM32F407----LED灯实验程序源码----点击下载


前言

本次实验以 STM32F407VET6 芯片为MCU,使用 25MHz 外部时钟源。
LED灯MCU引脚 对应关系如下:

LED灯MCU引脚
LED1PE3
LED2PE4
LED3PE5

一、使用STM32CubeMX----新建工程

步骤1:打开 STM32CubeMX 软件

具体 STM32CubeMX 界面如下:

在这里插入图片描述

步骤2:选择 从MCU开始我的项目

在这里插入图片描述

步骤3:选择MCU芯片

我们本次实验选择 STM32F407VET6 芯片做 MCU
在这里插入图片描述

进入工程编辑,具体界面如下:

在这里插入图片描述

步骤4:设置烧写方式为 SWD模式

这一步必须选择一种烧写方式,否则烧写一次程序后,芯片中就没法再次烧写程序了。需要硬件重启才可以重新烧写程序。

STM32烧写程序连接方式详解

在这里插入图片描述

步骤5:设置时钟源

设置外部晶振为芯片系统时钟源。
在这里插入图片描述

步骤6:LED灯 引脚配置

设置 PE3输出引脚
在这里插入图片描述
三个LED灯引脚配置结果 如下:
在这里插入图片描述

设置 LED灯 引脚的 GPIO模式,设置界面如下:
在这里插入图片描述
设置结果如下:
在这里插入图片描述

步骤7:设置时钟

STM32F407 时钟最大频率为 168M,我的开发板是 25M 外部时钟源,具体时钟配置如下:

在这里插入图片描述

步骤8:项目编辑

在这里插入图片描述

步骤9:代码生成编辑

在这里插入图片描述

步骤10:点击 GENERATE CODE 生成代码

在这里插入图片描述
新建的工程,已经生成,接下来就是对工程代码的编辑。

二、使用keil5----编辑程序

想要使用keil5打开工程,需要电脑先安装 keil5编译环境,具体操作流程。
可以点击下方文章链接:Keil5编译环境搭建流程----STM32和GD32

步骤1:使用keil5打开工程

点击工程文件中的MDK-ARM 文件
在这里插入图片描述
打开keil5工程
在这里插入图片描述

步骤2:用户代码 编辑位置

用户代码 要写在 USER xxxx BEGIN xxxUSER xxxx END xxx 之间。
这样下次使用 STM32CubeMX 重新生成代码后,自己写的代码不会被删除。
在这里插入图片描述

步骤3:查看生成代码

GPIO初始化程序生成如下:
在这里插入图片描述

步骤4:使用到的HAL库函数

/**
  *@功能:GPIO引脚输出配置
  *@参数1:指定GPIO外设---GPIOA、GPIOB、GPIOC...
  *@参数2:指定GPIO外设的引脚端口号---GPIO_PIN_0、GPIO_PIN_1。。。
  *@参数3:指定GPIO引脚输出模式---GPIO_PIN_RESET-置低,GPIO_PIN_SET-置高
  *@返回值:无
  */
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

举例说明:

HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET);	  //PE3置高
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); //PE3置低

步骤5:编辑程序 实现跑马灯实验

具体编辑如下:
在这里插入图片描述
具体代码如下:

HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET);	//PE3置低---LED1亮
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_SET);		//PE4置高---LED2灭
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_SET);		//PE5置高---LED3灭
HAL_Delay(200);//延时200ms
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET);		//PE3置高---LED1灭
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_RESET);	//PE4置低---LED2亮
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_SET);		//PE5置高---LED3灭
HAL_Delay(200);//延时200ms
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET);		//PE3置高---LED1灭
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_SET);		//PE4置高---LED2灭
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET);	//PE5置低---LED3亮
HAL_Delay(200);//延时200ms

步骤6:编译程序,然后烧写程序到开发板

具体烧写操作步骤,可以查看以下文章,有详细的烧写说明。
文章链接:
烧写程序(STM32+GD32):ST-link V2调试下载器实物和连接方式
烧写程序(STM32+GD32):ST-link驱动下载和安装
烧写程序(STM32+GD32):Keil5使用ST-link下载程序
资源链接:ST-link驱动链接----点击下载

步骤7:实现结果

LED1、LED2、LED3依次闪烁,实验成功!


三、LED控制函数模板

/**
  *@功能:LED控制函数
  *@参数:LED控制引脚状态:state=0,置低;state=1,置高。
  *@返回值:无
**/
#define LED_GPIO      GPIOE
#define LED_Pin       GPIO_PIN_3

void LED(uint8_t state)
{
  if(state)
  {
    HAL_GPIO_WritePin(LED_GPIO, LED_Pin, GPIO_PIN_SET);//置高
  }
  else
  {
    HAL_GPIO_WritePin(LED_GPIO, LED_Pin, GPIO_PIN_RESET);//置低
  }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

根号五

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值