×
单片机 > 单片机程序设计 > 详情

5050 RGB8路LED灯驱动(PWM驱动,STM32)

发布时间:2020-06-18 发布时间:
|

一、前期准备

单片机:STM32F103ZET6

开发环境:MDK5.14

库函数:标准库V3.5

RGB LED模块:淘宝有售


二、实验效果

类似奥迪转向灯,灯以此亮起,如此循环。颜色256 * 256 * 256色可调。


三、驱动原理

模块上面的RGB引脚低电平有效,LED灯IO口也是低电平有效。


四、驱动代码

led.h



#ifndef __LED_H__

#define __LED_H__

#include "stm32f10x.h"

#include "gpio.h"

#include "pwm.h"


#define LED_R PAout(1)

#define LED_G PAout(2)

#define LED_B PAout(3)


#define RGB_LED1 PGout(8)

#define RGB_LED2 PGout(9)

#define RGB_LED3 PGout(10)

#define RGB_LED4 PGout(11)

#define RGB_LED5 PGout(12)

#define RGB_LED6 PGout(13)

#define RGB_LED7 PGout(14)

#define RGB_LED8 PGout(15)


extern void LEDConfiguration(void);

#endif


led.C


#include  "led.h"


void LEDConfiguration(void)

{

GPIO_InitTypeDef    GPIO;

    

    //Enable APB2 Bus

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);

    

GPIO.GPIO_Pin = 0xff00;

GPIO.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOG, &GPIO);

LED_R = OFF;

LED_G = OFF;

LED_B = OFF;


RGB_LED1 = OFF;

RGB_LED2 = OFF;

RGB_LED3 = OFF;

RGB_LED4 = OFF;

RGB_LED5 = OFF;

RGB_LED6 = OFF;

RGB_LED7 = OFF;

RGB_LED8 = OFF;

PWMConfiguration();

}



APP.c


#include "app.h"


void LED_PWM(__led LEDx, uint32_t RGBVlaue)

{

switch(LEDx)

{

case LED1:

RGB_LED1 = ON;

RGB_LED2 = OFF;

RGB_LED3 = OFF;

RGB_LED4 = OFF;

RGB_LED5 = OFF;

RGB_LED6 = OFF;

RGB_LED7 = OFF;

RGB_LED8 = OFF;

break;

case LED2:

RGB_LED1 = OFF;

RGB_LED2 = ON;

RGB_LED3 = OFF;

RGB_LED4 = OFF;

RGB_LED5 = OFF;

RGB_LED6 = OFF;

RGB_LED7 = OFF;

RGB_LED8 = OFF;

break;

case LED3:

RGB_LED1 = OFF;

RGB_LED2 = OFF;

RGB_LED3 = ON;

RGB_LED4 = OFF;

RGB_LED5 = OFF;

RGB_LED6 = OFF;

RGB_LED7 = OFF;

RGB_LED8 = OFF;

break;

case LED4:

RGB_LED1 = OFF;

RGB_LED2 = OFF;

RGB_LED3 = OFF;

RGB_LED4 = ON;

RGB_LED5 = OFF;

RGB_LED6 = OFF;

RGB_LED7 = OFF;

RGB_LED8 = OFF;

break;

case LED5:

RGB_LED1 = OFF;

RGB_LED2 = OFF;

RGB_LED3 = OFF;

RGB_LED4 = OFF;

RGB_LED5 = ON;

RGB_LED6 = OFF;

RGB_LED7 = OFF;

RGB_LED8 = OFF;

break;

case LED6:

RGB_LED1 = OFF;

RGB_LED2 = OFF;

RGB_LED3 = OFF;

RGB_LED4 = OFF;

RGB_LED5 = OFF;

RGB_LED6 = ON;

RGB_LED7 = OFF;

RGB_LED8 = OFF;

break;

case LED7:

RGB_LED1 = OFF;

RGB_LED2 = OFF;

RGB_LED3 = OFF;

RGB_LED4 = OFF;

RGB_LED5 = OFF;

RGB_LED6 = OFF;

RGB_LED7 = ON;

RGB_LED8 = OFF;

break;

case LED8:

RGB_LED1 = OFF;

RGB_LED2 = OFF;

RGB_LED3 = OFF;

RGB_LED4 = OFF;

RGB_LED5 = OFF;

RGB_LED6 = OFF;

RGB_LED7 = OFF;

RGB_LED8 = ON;

break;

}

TIM_SetCompare2(TIM2, (uint8_t)(RGBVlaue / 65536 % 256));

TIM_SetCompare3(TIM2, (uint8_t)(RGBVlaue % 65536 / 256));

TIM_SetCompare4(TIM2, (uint8_t)(RGBVlaue % 256));

}


关键字:5050  RGB  LED灯驱动  PWM驱动  STM32 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何升级STM32单片机的代码