#include "led.h" #include "tim.h" #include "timer.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 static led_timed_id = -1; static led_times_id = -1; 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_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); } 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); }