登录/注册

STM32 驱动RGB程序

更多

以下是一个基于STM32 HAL库驱动RGB LED的示例程序(适用于共阴极连接方式)。假设使用TIM2的通道1-3控制红、绿、蓝三色:

#include "main.h"

// 定义RGB引脚对应的定时器和通道
#define RED_PWM    TIM2->CCR1  // PA0
#define GREEN_PWM  TIM2->CCR2  // PA1
#define BLUE_PWM   TIM2->CCR3  // PA2

// PWM周期设置(自动重装载值)
#define PWM_PERIOD 255

// 颜色设置函数
void RGB_SetColor(uint8_t red, uint8_t green, uint8_t blue) {
    RED_PWM = red;     // 红色通道占空比
    GREEN_PWM = green; // 绿色通道占空比
    BLUE_PWM = blue;   // 蓝色通道占空比
}

// PWM初始化函数(通过CubeMX配置生成)
void MX_TIM2_Init(void) {
    TIM_HandleTypeDef htim2;
    htim2.Instance = TIM2;
    htim2.Init.Prescaler = 71;                // 72MHz / (71+1) = 1MHz
    htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
    htim2.Init.Period = PWM_PERIOD;           // PWM周期
    htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    HAL_TIM_PWM_Init(&htim2);

    // 配置PWM通道
    TIM_OC_InitTypeDef sConfigOC;
    sConfigOC.OCMode = TIM_OCMODE_PWM1;
    sConfigOC.Pulse = 0;  // 初始占空比为0
    sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
    sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

    HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);
    HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2);
    HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3);

    // 启动PWM
    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    MX_TIM2_Init();

    while (1) {
        // 示例:彩虹颜色循环
        RGB_SetColor(255, 0, 0);     // 红色
        HAL_Delay(500);
        RGB_SetColor(0, 255, 0);     // 绿色
        HAL_Delay(500);
        RGB_SetColor(0, 0, 255);     // 蓝色
        HAL_Delay(500);
        RGB_SetColor(255, 255, 0);   // 黄色
        HAL_Delay(500);
        RGB_SetColor(0, 255, 255);   // 青色
        HAL_Delay(500);
        RGB_SetColor(255, 0, 255);   // 品红
        HAL_Delay(500);
        RGB_SetColor(255, 255, 255); // 白色
        HAL_Delay(500);
    }
}

硬件连接注意事项:

  1. 共阴极RGB LED:阴极接GND,阳极分别通过限流电阻连接PA0(红)、PA1(绿)、PA2(蓝)
  2. 限流电阻建议值:220Ω-1kΩ(根据LED规格调整)
  3. 若使用共阳极类型,需修改电路为共阳极接VCC,同时设置PWM极性为低电平有效

关键配置步骤:

  1. 使用STM32CubeMX配置定时器:

    • 选择TIM2
    • 设置通道1-3为PWM模式
    • 配置预分频器(Prescaler)和周期(Period)
  2. PWM参数计算:

    • PWM频率 = 定时器时钟 / (Prescaler + 1) / (Period + 1)
    • 示例配置产生约3.9kHz PWM(1MHz / 256)
  3. 颜色控制:

    • 使用0-255的数值范围控制亮度
    • 通过组合三原色比例实现不同颜色

扩展功能建议:

  1. 添加渐变效果(使用for循环逐渐改变颜色值)
  2. 实现呼吸灯效果(动态调整亮度)
  3. 添加外部控制(如串口、按键输入颜色值)
  4. 集成颜色传感器实现互动效果

实际使用时请根据具体硬件修改引脚定义和PWM参数,并通过STM32CubeMX生成对应初始化代码。

《机智云Gokit3开发篇》4 RGB灯的介绍与驱动移植(HAL库)

在物联网开发与STM32嵌入式应用实践中,RGB灯是实现可视化交互、状态指示的常用外设,而机智云Gokit3开发板作为物联网开发的经典硬件平台,其板载的RGB

2026-01-28 19:11:53

使用STM32的LTDC驱动3.5寸的rgb屏幕,为什么显示三分之二的屏幕?

使用STM32的LTDC驱动3.5寸的rgb屏幕,为什么显示三分之二的屏幕

2024-04-02 06:34:03

STM32驱动RGB屏幕屏幕抖动有线条出现的原因?

STM32驱动RGB屏幕屏幕抖动有线条出现怎么回事?

2023-10-09 07:59:43

MCU驱动RGB驱动的液晶屏的区别

概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存。而MCU接口,

资料下载 挽你何用 2021-10-28 15:36:07

MCU驱动RGB驱动的液晶屏的区别

概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存。而MCU接口,

资料下载 笑过就走 2021-10-28 15:21:03

MCU驱动RGB驱动的液晶屏的区别

概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存。而MCU接口,

资料下载 123 2021-10-26 15:21:06

MCU驱动RGB驱动的液晶屏的区别

概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存。而MCU接口,

资料下载 佚名 2021-10-25 14:06:05

STM32的ADC驱动程序

STM32的ADC驱动程序(电源技术被踢出核心)-  STM32的ADC驱动程序

资料下载 刘满贵 2021-09-23 13:43:22

如何利用STM32驱动WS2812B-RGB彩灯呢

RGB传输颜色信息到底传的是什么?具体数据是怎么传输的?如何利用STM32去驱动WS2812B-

2022-02-28 08:03:48

请问STM32 PWM如何驱动RGB全彩LED?

请问STM32 PWM如何驱动RGB全彩LED?

2021-11-25 08:09:40

MCU驱动RGB驱动的液晶屏有哪些区别

概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存。而MCU接口,

2021-11-03 06:35:41

MCU驱动RGB驱动的区别是什么

概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存。而MCU接口,

2021-11-01 07:15:08

怎样用STM32F429 LTDC去驱动RGB屏幕呢

STM32F429的特点有哪些?怎样用STM32F429 LTDC去驱动RGB

2021-10-15 09:56:51

STM32F429 LTDC如何驱动RGB屏幕

STM32F429 LTDC驱动RGB屏幕

2021-03-03 06:20:54

如何开发基于LCC驱动程序的基于ILI934的串行6位RGB显示器的驱动程序

我需要开发一个基于LCC驱动程序的基于ILI934 2C的串行6位RGB显示器的驱动程序。有人做过类似的事情吗?有什么建议吗?时序图附接

2020-05-08 13:46:27
7天热门专题 换一换
相关标签