给大家分享下stm32的rgb多彩led驱动
头文件:
#ifndef _LED_H
#define _LED_H
#ifdef __cplusplus
extern "C" {
#endif
#define RED 1
#define GREEN 2
#define BLUE 3
#define YELLOW 4
#define PURPLE 5
#define NAVY 6
#define WHITE 7
typedef enum { false= 0, true = !false} bool;
void led_init(void);
void led_ctrl(u8 colour, bool state);
#ifdef __cplusplus
}
#endif
#endif
源文件:
#include "led.h"
void led_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// GPIO_ResetBits(GPIOA, GPIO_Pin_11);
// GPIO_ResetBits(GPIOA, GPIO_Pin_12);
// GPIO_ResetBits(GPIOA, GPIO_Pin_15);
GPIO_SetBits(GPIOA, GPIO_Pin_11);
GPIO_SetBits(GPIOA, GPIO_Pin_12);
GPIO_SetBits(GPIOA, GPIO_Pin_15);
}
void led_ctrl(u8 colour, bool state)
{
switch(colour){
case RED:
if(state){
GPIO_ResetBits(GPIOA, GPIO_Pin_11);
}
else {
GPIO_SetBits(GPIOA, GPIO_Pin_11);
}
break;
case GREEN:
if(state){
GPIO_ResetBits(GPIOA, GPIO_Pin_12);
}
else{
GPIO_SetBits(GPIOA, GPIO_Pin_12);
}
break;
case BLUE:
if(state){
GPIO_ResetBits(GPIOA, GPIO_Pin_15);
}
else {
GPIO_SetBits(GPIOA, GPIO_Pin_15);
}
break;
case YELLOW:
if(state){
GPIO_ResetBits(GPIOA, GPIO_Pin_11);
GPIO_ResetBits(GPIOA, GPIO_Pin_12);
}
else{
GPIO_SetBits(GPIOA, GPIO_Pin_11);
GPIO_SetBits(GPIOA, GPIO_Pin_12);
}
break;
case PURPLE:
if(state){
GPIO_ResetBits(GPIOA, GPIO_Pin_11);
GPIO_ResetBits(GPIOA, GPIO_Pin_15);
}
else{
GPIO_SetBits(GPIOA, GPIO_Pin_11);
GPIO_SetBits(GPIOA, GPIO_Pin_15);
}
break;
case NAVY:
if(state){
GPIO_ResetBits(GPIOA, GPIO_Pin_12);
GPIO_ResetBits(GPIOA, GPIO_Pin_15);
}
else{
GPIO_SetBits(GPIOA, GPIO_Pin_12);
GPIO_SetBits(GPIOA, GPIO_Pin_15);
}
break;
case WHITE:
if(state){
GPIO_ResetBits(GPIOA, GPIO_Pin_11);
GPIO_ResetBits(GPIOA, GPIO_Pin_12);
GPIO_ResetBits(GPIOA, GPIO_Pin_15);
}
else{
GPIO_SetBits(GPIOA, GPIO_Pin_11);
GPIO_SetBits(GPIOA, GPIO_Pin_12);
GPIO_SetBits(GPIOA, GPIO_Pin_15);
}
break;
default:
break;
}
}