STM32学习第一周之 循环显示RGBLED的七种颜色 您所在的位置:网站首页 arduinorgb灯七色代码 STM32学习第一周之 循环显示RGBLED的七种颜色

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

2024-01-28 08:30| 来源: 网络整理| 查看: 265

写的第一个STM32程序,花了两天时间,最终还是蛮有成就感的 分享出来供大家一起学习,有好的优化建议还请不吝赐教

连接 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实现,不需要这一功能的朋友自行去除



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有