本文主要是介绍5050 RGB8路LED灯驱动(PWM驱动,STM32),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、前期准备
单片机:STM32F103ZET6
开发环境:MDK5.14
库函数:标准库V3.5
RGB LED模块:淘宝有售
二、实验效果
类似奥迪转向灯,灯以此亮起,如此循环。颜色256 * 256 * 256色可调。
IO驱动方式
三、驱动原理
模块上面的RGB引脚低电平有效,LED灯IO口也是低电平有效。
需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。
四、驱动代码
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 BusRCC_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));
}
由于作者能力有限,有不妥之处欢迎指正,邮箱alex_hua@foxmail.com
这篇关于5050 RGB8路LED灯驱动(PWM驱动,STM32)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!