43 lines
1.3 KiB
C
43 lines
1.3 KiB
C
#include "led.h"
|
|
#include "main.h"
|
|
|
|
HAL_StatusTypeDef led_init(TIM_HandleTypeDef* htim) {
|
|
TRY(HAL_TIM_PWM_Start(htim, LED_CH_R));
|
|
TRY(HAL_TIM_PWM_Start(htim, LED_CH_G));
|
|
TRY(HAL_TIM_PWM_Start(htim, LED_CH_B));
|
|
|
|
int32_t color = COLOR_ERROR;
|
|
|
|
int32_t Blue = color & 0x000000FF;
|
|
int32_t Green = (color & 0x0000FF00) >> 8;
|
|
int32_t Red = (color & 0x00FF0000) >> 16;
|
|
|
|
DUTY_CYCLE_R = Red;
|
|
DUTY_CYCLE_G = Green;
|
|
DUTY_CYCLE_B = Blue;
|
|
|
|
return HAL_OK;
|
|
}
|
|
|
|
// function for setting the blink functionality of the status LED, set blink_period to 0 to make it light up constantly
|
|
HAL_StatusTypeDef led_blink(TIM_HandleTypeDef* htim, int32_t color, int16_t blink_period) {
|
|
int32_t Blue = color & 0x000000FF;
|
|
int32_t Green = (color & 0x0000FF00) >> 8;
|
|
int32_t Red = (color & 0x00FF0000) >> 16;
|
|
|
|
DUTY_CYCLE_R = Red;
|
|
DUTY_CYCLE_G = Green;
|
|
DUTY_CYCLE_B = Blue;
|
|
|
|
if ((HAL_GetTick() % blink_period) < blink_period/2) {
|
|
TRY(HAL_TIM_PWM_Stop(htim, LED_CH_R));
|
|
TRY(HAL_TIM_PWM_Stop(htim, LED_CH_G));
|
|
TRY(HAL_TIM_PWM_Stop(htim, LED_CH_B));
|
|
} else {
|
|
TRY(HAL_TIM_PWM_Start(htim, LED_CH_R));
|
|
TRY(HAL_TIM_PWM_Start(htim, LED_CH_G));
|
|
TRY(HAL_TIM_PWM_Start(htim, LED_CH_B));
|
|
}
|
|
|
|
return HAL_OK;
|
|
} |