2024-07-11 18:07:17 +08:00
|
|
|
#include "led.h"
|
2024-07-20 10:44:59 +08:00
|
|
|
|
2024-07-11 18:07:17 +08:00
|
|
|
#include "tim.h"
|
2024-07-20 10:44:59 +08:00
|
|
|
#include "timer.h"
|
2024-07-11 18:07:17 +08:00
|
|
|
|
|
|
|
#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
|
|
|
|
|
2024-07-20 10:44:59 +08:00
|
|
|
static led_timed_id = -1;
|
|
|
|
static led_times_id = -1;
|
|
|
|
|
2024-07-11 18:07:17 +08:00
|
|
|
void LED_Start(uint8_t led)
|
|
|
|
{
|
2024-07-20 10:44:59 +08:00
|
|
|
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);
|
2024-07-11 18:07:17 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void LED_Stop(uint8_t led)
|
|
|
|
{
|
2024-07-20 10:44:59 +08:00
|
|
|
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_StartTimed(uint8_t led, uint16_t time)
|
|
|
|
{
|
|
|
|
led_timed_id = TIMER_AddDelayEvent(led_timed_id, LED_Stop, time);
|
|
|
|
}
|
|
|
|
|
|
|
|
void LED_StartNTimes(uint8_t led, uint16_t on_time, uint16_t off_time)
|
|
|
|
{
|
|
|
|
// led_times_id = TIMER_AddFiniteLoopEvent(led_times_id, LED_Stop, time);
|
2024-07-11 18:07:17 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void LED_SetDuty(uint8_t r, uint8_t g, uint8_t b)
|
|
|
|
{
|
2024-07-20 10:44:59 +08:00
|
|
|
__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);
|
2024-07-11 18:07:17 +08:00
|
|
|
}
|