From 3d6efbed18bf2b5547b4f92088261135b8539313 Mon Sep 17 00:00:00 2001 From: EN Date: Thu, 11 Jul 2024 18:07:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0led?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Core/Inc/led.h | 17 +++++++++++++++++ Core/Src/led.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 Core/Inc/led.h create mode 100644 Core/Src/led.c diff --git a/Core/Inc/led.h b/Core/Inc/led.h new file mode 100644 index 0000000..31262e4 --- /dev/null +++ b/Core/Inc/led.h @@ -0,0 +1,17 @@ +#ifndef __LED_H +#define __LED_H + +#include "main.h" + +#define LED_R 1 +#define LED_G 2 +#define LED_B 4 +#define LED_ALL 7 + +void LED_Start(uint8_t led); +void LED_Stop(uint8_t led); + +// duty in [0, 100] +void LED_SetDuty(uint8_t r, uint8_t g, uint8_t b); + +#endif diff --git a/Core/Src/led.c b/Core/Src/led.c new file mode 100644 index 0000000..cdf511d --- /dev/null +++ b/Core/Src/led.c @@ -0,0 +1,34 @@ +#include "led.h" +#include "tim.h" + +#define LED_TIM (&htim3) +#define LED_R_CHAN TIM_CHANNEL_4 +#define LED_G_CHAN TIM_CHANNEL_3 +#define LED_B_CHAN TIM_CHANNEL_2 + +void LED_Start(uint8_t led) +{ + if (led & LED_R) + HAL_TIM_PWM_Start(LED_TIM, LED_R_CHAN); + if (led & LED_G) + HAL_TIM_PWM_Start(LED_TIM, LED_G_CHAN); + if (led & LED_B) + HAL_TIM_PWM_Start(LED_TIM, LED_B_CHAN); +} + +void LED_Stop(uint8_t led) +{ + if (led & LED_R) + HAL_TIM_PWM_Stop(LED_TIM, LED_R_CHAN); + if (led & LED_G) + HAL_TIM_PWM_Stop(LED_TIM, LED_G_CHAN); + if (led & LED_B) + HAL_TIM_PWM_Stop(LED_TIM, LED_B_CHAN); +} + +void LED_SetDuty(uint8_t r, uint8_t g, uint8_t b) +{ + __HAL_TIM_SetCompare(LED_TIM, LED_R_CHAN, r); + __HAL_TIM_SetCompare(LED_TIM, LED_G_CHAN, g); + __HAL_TIM_SetCompare(LED_TIM, LED_B_CHAN, b); +}