登录/注册

4个led灯循环点亮stm32程序

4个led灯循环点亮stm32程序

更多

以下是一个基于STM32 HAL库实现的4个LED循环点亮程序示例(以STM32F1系列为例,请根据实际硬件修改引脚配置):

#include "stm32f1xx_hal.h"

// 定义LED引脚(根据实际电路修改)
#define LED1_PIN    GPIO_PIN_0
#define LED1_PORT   GPIOA
#define LED2_PIN    GPIO_PIN_1
#define LED2_PORT   GPIOA
#define LED3_PIN    GPIO_PIN_2
#define LED3_PORT   GPIOA
#define LED4_PIN    GPIO_PIN_3
#define LED4_PORT   GPIOA

// 初始化LED GPIO
void LED_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    __HAL_RCC_GPIOA_CLK_ENABLE(); // 使能GPIOA时钟

    // 配置GPIO参数
    GPIO_InitStruct.Pin = LED1_PIN | LED2_PIN | LED3_PIN | LED4_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;   // 推挽输出
    GPIO_InitStruct.Pull = GPIO_PULLUP;            // 上拉
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;  // 低速

    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    // 初始状态:关闭所有LED(根据实际电路修改电平)
    HAL_GPIO_WritePin(LED1_PORT, LED1_PIN, GPIO_PIN_SET);
    HAL_GPIO_WritePin(LED2_PORT, LED2_PIN, GPIO_PIN_SET);
    HAL_GPIO_WritePin(LED3_PORT, LED3_PIN, GPIO_PIN_SET);
    HAL_GPIO_WritePin(LED4_PORT, LED4_PIN, GPIO_PIN_SET);
}

int main(void)
{
    HAL_Init();
    SystemClock_Config(); // 需要根据实际配置时钟(可由CubeMX生成)
    LED_Init();

    while (1)
    {
        // LED1亮,其他灭
        HAL_GPIO_WritePin(LED1_PORT, LED1_PIN, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(LED2_PORT, LED2_PIN, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED3_PORT, LED3_PIN, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED4_PORT, LED4_PIN, GPIO_PIN_SET);
        HAL_Delay(200);

        // LED2亮,其他灭
        HAL_GPIO_WritePin(LED1_PORT, LED1_PIN, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED2_PORT, LED2_PIN, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(LED3_PORT, LED3_PIN, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED4_PORT, LED4_PIN, GPIO_PIN_SET);
        HAL_Delay(200);

        // LED3亮,其他灭
        HAL_GPIO_WritePin(LED1_PORT, LED1_PIN, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED2_PORT, LED2_PIN, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED3_PORT, LED3_PIN, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(LED4_PORT, LED4_PIN, GPIO_PIN_SET);
        HAL_Delay(200);

        // LED4亮,其他灭
        HAL_GPIO_WritePin(LED1_PORT, LED1_PIN, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED2_PORT, LED2_PIN, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED3_PORT, LED3_PIN, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED4_PORT, LED4_PIN, GPIO_PIN_RESET);
        HAL_Delay(200);
    }
}

注意事项:

  1. 修改GPIO引脚:根据实际硬件连接修改LEDx_PINLEDx_PORT的定义
  2. 电平逻辑:如果LED是低电平点亮(共阳极),使用示例中的GPIO_PIN_RESET点亮;如果是高电平点亮(共阴极),需要反转逻辑
  3. 时钟配置:SystemClock_Config()函数需要根据实际时钟配置实现(推荐使用STM32CubeMX生成)
  4. 延时时间:通过修改HAL_Delay()参数调整流水灯速度(单位:毫秒)

更简洁的循环实现方式(使用数组轮询):

// 在main函数前添加:
typedef struct {
    GPIO_TypeDef* port;
    uint16_t pin;
} LED_TypeDef;

const LED_TypeDef LEDs[] = {
    {LED1_PORT, LED1_PIN},
    {LED2_PORT, LED2_PIN},
    {LED3_PORT, LED3_PIN},
    {LED4_PORT, LED4_PIN}
};

// 修改主循环:
while (1)
{
    for (int i = 0; i < 4; i++) {
        // 关闭所有LED
        for (int j = 0; j < 4; j++) {
            HAL_GPIO_WritePin(LEDs[j].port, LEDs[j].pin, GPIO_PIN_SET);
        }
        // 点亮当前LED
        HAL_GPIO_WritePin(LEDs[i].port, LEDs[i].pin, GPIO_PIN_RESET);
        HAL_Delay(200);
    }
}

建议使用STM32CubeMX进行GPIO和时钟的图形化配置,可以自动生成初始化代码。

怎么采用C语言编程序通过单片机的I/O端口点亮LED

单片机的I/O端口点亮一个LED灯。 一、硬件组成 在开始编写

2023-09-02 17:05:47

STM32F407-点亮LED

点亮LED需要首先初始化。这块STM32F4开发板的LED共有

2023-06-07 16:46:17

汇编点亮LED——极简的魅力

介绍4句汇编语言点亮LED灯

2023-04-27 08:58:46

STM32入坑教程(一)点亮LED

STM32入门教程(一)点亮一个LED

资料下载 佚名 2021-12-24 19:34:44

51单片机——点亮LED

uVision4软件中进行编程一、原理图二、点亮一个LED

资料下载 佚名 2021-11-23 18:06:38

16LED循环点亮的小程序(代码)资料下载

电子发烧友网为你提供16个LED灯循环

资料下载 佚名 2021-04-24 08:44:50

使用单片机实现点亮LED程序和仿真资料免费下载

本文档的主要内容详细介绍的是使用单片机实现点亮一个LED灯的

资料下载 佚名 2021-03-18 17:11:06

如何使用单片机点亮LED

我们学单片机,第一个程序就是点亮一盏LED

资料下载 佚名 2019-07-16 17:39:00

点亮STM32、FPGA和Liunx板子的LED

摘要:你点亮过多少板子的LED灯呢?有很多小伙伴要求讲一下STM32、F

2022-04-18 11:16:26

如何点亮led

目标:点亮一个led灯先贴上代码:***it 是定义位,P2^0表示P2

2022-01-05 08:09:17

如何利用STM32F103点亮LED

基于STM32F103点亮一个LED

2021-12-16 08:28:51

采用STM32上一GPIO口来控制对应的一LED点亮和熄灭

实验一 单个LED灯的闪烁1.1系统功能实现对STM32开发板上单个LED

2021-12-15 06:08:46

通过编程控制8LED循环点亮

控制 8 个 LED 灯循环

2021-11-10 07:58:58

STM32点亮程序思路

来看看最简单的点亮一个灯的实验你把,实验要求使用KEY4*

2021-08-13 09:06:57

基于STM32点亮LED

STM32入门教程(一)点亮一个LED

2021-08-11 07:59:47
7天热门专题 换一换
相关标签