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

STM32学习第一周之 循环显示RGBLED的七种颜色

发布时间:2020-05-30 发布时间:
|

连接 RGB LED模块,使得该模块能够依次显示 7 种颜色的光,并且可以循环显示。

注意:添加一个 RGBLED.c 和 RGBLED.h 文件

RGBLED.h 文件里面,对 RGBLED 使用的引脚和端口进行宏定义

RGBLED.c 文件里面,设计一个 RGBLED_Init 函数,一个 RGBLED_Display(颜色值)

函数


RGBLED.h


#ifndef __RGBLED_H

#define __RGBLED_H  

#include "sys.h"


#define R PEout(7)

#define G PEout(8)

#define B PEout(9)


#define RED     1

#define GREEN   2

#define BLUE    3

#define YELLOW  4

#define NAVY    5

#define PURPLE  6

#define WHITE   7

   

void RGBLED_Init(void);

void RGBLED_Display(u8 colour, int state);


#endif


#include "RGBLED.h"

    

//LED IO初始化

void RGBLED_Init(void)

{

 

GPIO_InitTypeDef  GPIO_InitStructure;


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口时钟


GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //R-->PE.7 端口配置

GPIO_Init(GPIOE, &GPIO_InitStructure); //根据设定参数初始化GPIOE.7

GPIO_SetBits(GPIOE,GPIO_Pin_7);      //PE.7 输出高


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;     //G-->PE.8 端口配置, 推挽输出

GPIO_Init(GPIOE, &GPIO_InitStructure);   //推挽输出 ,IO口速度为50MHz

GPIO_SetBits(GPIOE,GPIO_Pin_8); //PE.8 输出高 


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;     //B-->PE.9 端口配置, 推挽输出

GPIO_Init(GPIOE, &GPIO_InitStructure);   //推挽输出 ,IO口速度为50MHz

GPIO_SetBits(GPIOE,GPIO_Pin_9); //PE.9 输出高 

}


RGBLED.c


void RGBLED_Display(u8 colour, int state) //state = 1;表示灯亮,state = 0;表示灯灭

{

    switch(colour){

        case RED:

            if(state){

                R = 0; G = 1; B = 1;

            }

            else{

R = 1; G = 0; B = 0;

            }

            break;

        case GREEN:

            if(state){

                R = 1; G = 0; B = 1;

            }

            else{

        R = 0; G = 1; B = 0;

            }

            break;

        case BLUE:

            if(state){

                R = 1; G = 1; B = 0;

            }

            else {

                R = 0; G = 0; B = 1;

            }

            break;

        case YELLOW:

            if(state){

                R = 0; G = 0; B = 1;

            }

            else{

                R = 1; G = 1; B = 0;

            }

            break;

        case NAVY:

            if(state){

                R = 1; G = 0; B = 0;

                }

            else{

                R = 0; G = 1; B = 1;

            }

            break;

        case PURPLE:

            if(state){

                R = 0; G = 1; B = 0;

            }

            else{

                R = 1; G = 0; B = 1;

            }

            break;

        case WHITE:

            if(state){

                R = 0; G = 0; B = 0;

            }

            else{ 

R = 1; G = 1; B = 1;

            }

            break;

        default:

            break;

    }

}


后边会设计利用按键矩阵来控制小灯的亮灭,在这利用state实现,不需要这一功能的朋友自行去除



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

热门文章 更多
单片机制作超级流水灯