2024年5月7日发(作者:)

嵌入式led灯亮灭实验报告

一、实验目的

1. 学习嵌入式系统中GPIO的控制方法

2. 掌握通过控制GPIO控制LED的亮灭

二、实验器材

32L4Discovery开发板

3.杜邦线若干

三、实验原理

STM32L4Discovery开发板上集成了许多IO口,GPIO控制可使这些IO口实现不同的功

能,包括输入信号的采集、输出信号的控制等。本次实验主要通过对STM32L4Discovery开

发板中硬件端口的控制,使得LED灯亮灭。

四、实验步骤

1. 接线

将LED灯的负极连接至GND,正极连接至开发板的一个GPIO口上,本次实验中我们选

择PA5口。

2. 创建新工程

首先打开STM32CubeIDE,创建新工程,选择自己所需要的板卡型号和工程名字以及存

放在电脑上的路径。完成基本的配置后,点击“Finish”按钮。

在弹出的窗口中选择“SW4STM32”作为开发环境,点击“OK”按钮。至此,我们已经

创建好了新的STM32工程。

3. 配置GPIO口

在左侧的“Pinout&Configuration”中,我们可以看到PA5口是已经被配置为GPIO口

了。将其设置为输出GPIO口,在“Mode”下拉菜单中选择“GPIO Output”,“Pull”下

拉菜单选择“ No Pull-up, No Pull-down ”,其他参数固定即可。

4. 编写控制程序

5. 编译并下载程序

点击工具栏上的“Hammer”按钮编译程序,寻找编译错误,并解决它们。

编译成功后,连接STM32L4Discovery开发板和电脑,点击工具栏上的“Play”按钮,

下载程序至开发板进行运行。

五、实验结果

程序运行成功后,LED灯开始绿色闪烁。

六、实验参考源码

以下代码仅供参考,不可直接拷贝使用。

/* Private variables */

GPIO_TypeDef* GPIO_PORT[LEDn] = {LED1_GPIO_PORT};

const uint16_t GPIO_PIN[LEDn] = {LED1_PIN};

const uint32_t GPIO_CLK[LEDn] = {LED1_GPIO_CLK};

const uint32_t GPIO_SOURCE[LEDn] = {LED1_GPIO_AF};

/* Private function prototypes */

void LED_GPIO_Init(Led_TypeDef Led);

/**

* @brief Initialises the GPIO for the led

* @param Led: Specifies the Led to be configured

* @retval None

*/

void LED_GPIO_Init(Led_TypeDef Led)

{

GPIO_InitTypeDef GPIO_InitStructure;

/* Enable the GPIO_LED Clock */

RCC_AHB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);

/* Configure the GPIO_LED pin */

GPIO__Pin = GPIO_PIN[Led];

GPIO__Mode = GPIO_Mode_AF;//GPIO_Mode_OUT;

GPIO__OType = GPIO_OType_PP;

GPIO__PuPd = GPIO_PuPd_NOPULL;

GPIO__Speed = GPIO_Speed_40MHz;

GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure);

while (1)

{

GPIO_SetBits(GPIOA, GPIO_Pin_5);

Delay(1000);

GPIO_ResetBits(GPIOA, GPIO_Pin_5);

Delay(1000);

}

}

通过以上实验,我们学会了如何通过STM32L4Discovery开发板上的GPIO口来控制LED

灯的亮灭,并最终实现了LED灯的周期性亮灭。这对于初学者理解嵌入式系统的GPIO控制

原理和开发方法非常有帮助。