在本章中,我们将通过代码控制
ALIENTEK 阿波罗
STM32 开发板上的两个
LED 灯
DS0 和
DS1 交替闪烁,实现类似跑马灯的效果。
一、 STM32F4 IO 口简介
这部分内容可参考STM32F4 | GPIO工作原理和配置。
二、硬件设计
本章用到的硬件只有 LED(DS0 和 DS1)。其电路在 ALIENTEK 阿波罗 STM32 开发板上默认是已经连接好了的。DS0 接 PB1,DS1 接 PB0。所以在硬件上不需要动任何东西。其连接原理图如下:

三、软件设计
我们直接复制前面创建好的工程模板——库函数版本,将复制过来的模板文件夹重新命名为“1-跑马灯实验”。在模板里面的 HALLIB 分组下面,我们引入了所有的 HAL 库源文件和对应的头文件,如下图所示:

实际上,这些大家可以根据工程需要添加。跑马灯实验我们一共使用到 HAL 库中 9 个源文件,其他不用的源文件大家可以直接在工程中删除。这样可以大大减少工程编译时间。
在工程根目录文件夹下面新建一个 HARDWARE 的文件夹,用来存储与硬件相关的代码。然后在 HARDWARE 文件夹下新建一个 LED 文件夹,用来存放与 LED 相关的代码。

接下来, 我们回到我们的工程,新建一个文件,然后保存在HARDWARE->LED 文件夹下面,保存为 led.c,

在led.c文件中输入以下代码:
#include "led.h"
/*
函数名称:LED_Init
函数作用:LED初始化配置
输 入:无
输 出:无
*/
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_Initure; //定义结构体变量,结构体成员为GPIO的相关模式和状态
__HAL_RCC_GPIOB_CLK_ENABLE(); //开启 GPIOB 时钟
//设置多个IO口,并且在同一个分组下,并且每个IO的配置都是一样的,就可以通过“|”来设置
GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; //指定IO口:PB1,0
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //模式设置:推挽输出;GPIO_MODE_OUTPUT_OD是开漏输出
GPIO_Initure.Pull=GPIO_PULLUP; //上下拉设置:上拉
GPIO_Initure.Speed=GPIO_SPEED_HIGH; //速度设置:高速
HAL_GPIO_Init(GPIOB,&GPIO_Initure);
//设置一组 IO 口中的一个或者多个 IO 口的电平状态
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET); //PB0 置 1 ,默认灯灭
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET); //PB1 置 1 ,默认灯灭
}
其头文件为led.h

这篇博客介绍了如何在STM32F4上进行跑马灯实验,包括STM32F4的IO口简介、硬件设计、软件设计,特别是位带操作的原理和优势,以及通过STM32CubeMX配置IO口输入的步骤。实验结果显示LED灯循环闪烁。

2462

被折叠的 条评论
为什么被折叠?



