Funpack4-3 - 使用MAX32655实现控制RGB LED
使用MAX32655FTHR开发板实现控制RGB LED方案的功能,并通过按键实现控制灯显示和闪烁切换,和控制呼吸灯的工作。
标签
嵌入式系统
开发板
DIY
RGB
meiyao
更新2026-02-25
12


一、硬件核心信息


MAX32655FTHR板上有三个RGB LED:

根据ADI官方数据手册,MAX32655FTHRRGB LED通过GPIO引脚直接控制(典型配置:R-GPIO18, G-GPIO19, B-GPIO21),需结合PWM实现调节。

连接至MAX32655FTHRGPIO端口。

端口0.18:红色,

端口0.19:绿色

端口0.26:蓝色

用户按钮连接GPIO02,GPIO03,GPIO13

电源管理

MAX20303 PMIC提供3.3V稳压输出,RGB LED需使用3.3V电源。

 

 

二、开发环境与硬件了解

开发环境:VS Code

创建新项目选择Maxim MAX32655开发板。

添加依赖库:用于硬件PWMGPIO控制。

头文件:

#include <stdio.h>

#include "mxc_device.h"

#include "board.h"

#include "gpio.h"

 

开发板LED定义

三、图纸

LED

按键

四、软件工作流程图

五、重要代码

呼吸灯

tatic void breath_led(void) {

    mxc_gpio_regs_t *port;

    uint32_t currmask = 0;

 

    all_leds_off();

 

    switch (current_color) {

    case COLOR_RED:

        port = LED_RED_PORT;

        currmask = LED_RED_PIN;

        break;

    case COLOR_GREEN:

        port = LED_GREEN_PORT;

        currmask = LED_GREEN_PIN;

        break;

    case COLOR_BLUE:

        port = LED_BLUE_PORT;

        currmask = LED_BLUE_PIN;

        break;

    case COLOR_OFF:

        // 保持全灭

        return;

        break;

    }

 

    // 渐亮

    for (int duty = 0; duty <= 100; duty += 1) {

        for (int i = 0; i < 100; i++) {

            if (i < duty) {

                MXC_GPIO_OutClr(port, currmask);

            } else {

                MXC_GPIO_OutSet(port, currmask);

            }

            MXC_Delay(MXC_DELAY_USEC(50));

        }

    }

 

    // 渐灭

    for (int duty = 100; duty >= 0; duty -= 1) {

        for (int i = 0; i < 100; i++) {

            if (i < duty) {

                MXC_GPIO_OutClr(port, currmask);

            } else {

                MXC_GPIO_OutSet(port, currmask);

            }

            MXC_Delay(MXC_DELAY_USEC(50));

        }

    }

}

RGB

static void flash_rgb(void) {

    static color_state_t flash_color = COLOR_RED;

 

    all_leds_off();

 

    switch (flash_color) {

    case COLOR_RED:

        MXC_GPIO_OutClr(LED_RED_PORT, LED_RED_PIN);

        printf("Flash: RED\n");

        flash_color = COLOR_GREEN;

        break;

    case COLOR_GREEN:

        MXC_GPIO_OutClr(LED_GREEN_PORT, LED_GREEN_PIN);

        printf("Flash: GREEN\n");

        flash_color = COLOR_BLUE;

        break;

    case COLOR_BLUE:

        MXC_GPIO_OutClr(LED_BLUE_PORT, LED_BLUE_PIN);

        printf("Flash: BLUE\n");

        flash_color = COLOR_RED;

        break;

    default:

        flash_color = COLOR_RED;

        break;

    }

 

    MXC_Delay(MXC_DELAY_MSEC(FLASH_INTERVAL_MS));

}

 

六、实现RGB效果

红色

绿色

蓝色

总结

使用MAX32655FTHR开发板实现RGB LED控制方案,是利用其Arm Cortex-M4F内核与丰富外设资源。硬件方面,将RGB LEDRGB引脚分别连接至开发板PWM输出,按键连接至GPIO输入引脚并启用内部上拉电阻。软件实现上,通过配置TIM生成PWM信号,控制RGB亮度;按键检测采用轮询或中断方式,短按切换显示模式,彩虹循环、单色固定,长按进入呼吸灯模式。呼吸灯效果通过动态调整PWM占空比实现,其实还是很我学习蛮多的,因为VS CODE开发相对来说还是非常好用的,让我开发上越来越顺利,越快速。

附件下载
main.zip
团队介绍
个人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号