SLS/Software/Core/Src/led.c

52 lines
1.2 KiB
C

#include <stdint.h>
#include "farbe.h"
#include "stm32f042x6.h"
#include "stm32f0xx_hal.h"
#include "stm32f0xx_hal_tim.h"
#define DELAY 50000
int Counter = 0;
void led_init(TIM_HandleTypeDef* htim) {
HAL_TIM_PWM_Start(htim, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(htim, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(htim, TIM_CHANNEL_3);
int32_t color = SLSERROR;
int32_t Blue = color & 0x000000FF;
int32_t Green = (color & 0x0000FF00) >> 8;
int32_t Red = (color & 0x00FF0000) >> 16;
TIM2->CCR1 = Green;
TIM2->CCR2 = Red;
TIM2->CCR3 = Blue;
HAL_Delay(1000);
}
void blink(TIM_HandleTypeDef* htim, int32_t color) {
if(Counter < DELAY) {
Counter ++;
} else {
Counter = 0;
}
int32_t Blue = color & 0x000000FF;
int32_t Green = (color & 0x0000FF00) >> 8;
int32_t Red = (color & 0x00FF0000) >> 16;
TIM2->CCR1 = Green;
TIM2->CCR2 = Red;
TIM2->CCR3 = Blue;
if (Counter < DELAY/2) {
HAL_TIM_PWM_Stop(htim, TIM_CHANNEL_1);
HAL_TIM_PWM_Stop(htim, TIM_CHANNEL_2);
HAL_TIM_PWM_Stop(htim, TIM_CHANNEL_3);
} else {
HAL_TIM_PWM_Start(htim, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(htim, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(htim, TIM_CHANNEL_3);
}
}