您的位置:首页 > 其它

stm32 rgb多彩led驱动

2017-08-18 16:56 363 查看
给大家分享下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_11 | 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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: