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; } }
相关文章推荐
- STM32外设驱动---LED
- STM32 PC13 PC14 PC15 驱动LED配置
- STM32 MAX7219驱动的8*8 LED点阵 填坑
- ②这次将stm32的PC13作为普通i/o口驱动led,不知道能否发生网上提到的现象
- ②这次将stm32的PC13作为普通i/o口驱动led,不知道能否发生网上提到的现象
- 使用ATtiny85单片机驱动四个RGB LED指示灯
- STM32之使用库函数驱动LED灯
- STM32: 利用高级定时器产生6路互补PWM波形输出在BLDC中H-PWM-L-ON驱动方式下驱动无刷电机
- Linux字符设备驱动之LED驱动
- 基于TQ2440开发的LED驱动
- LED TICK驱动
- 树莓派GPIO控制RGB彩色LED灯
- 51单片机驱动数码管(LED)时的注意事项
- Linux内核模块驱动之---led驱动
- STM32 串口发数据来控制开发板上的LED亮度
- 编译加载mini2440_led驱动后,测试 该驱动是否有用
- fl2440使能linux-3.0内核自带的led驱动,并测试
- linux驱动学习之LED篇(二)
- STM32使用PWM控制LED呼吸灯效果
- STM32-移植FATFS的NANDFLASH驱动