From 5231ab315ad57449d3492dcf7d4312f425bca892 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Sat, 18 Nov 2023 13:40:48 +0800 Subject: [PATCH] Added LED Strip. --- radio/src/targets/pl18/CMakeLists.txt | 3 +++ radio/src/targets/pl18/board.cpp | 15 +++++++++++++++ radio/src/targets/pl18/hal.h | 15 +++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/radio/src/targets/pl18/CMakeLists.txt b/radio/src/targets/pl18/CMakeLists.txt index 580ab7b5de0..e614af6ce30 100644 --- a/radio/src/targets/pl18/CMakeLists.txt +++ b/radio/src/targets/pl18/CMakeLists.txt @@ -45,6 +45,7 @@ add_definitions(-DPCBPL18 -DPCBFLYSKY) add_definitions(-DBATTERY_CHARGE) add_definitions(-DSOFTWARE_VOLUME) add_definitions(-DSPI_FLASH) +add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS) if(PCBREV STREQUAL PL18EV) set(FLAVOUR pl18ev) @@ -152,6 +153,8 @@ set(FIRMWARE_SRC targets/common/arm/stm32/dma2d.cpp targets/common/arm/stm32/spi_flash.cpp targets/common/arm/stm32/diskio_spi_flash.cpp + targets/common/arm/stm32/stm32_ws2812.cpp + boards/generic_stm32/rgb_leds.cpp drivers/frftl.cpp ) diff --git a/radio/src/targets/pl18/board.cpp b/radio/src/targets/pl18/board.cpp index 25e457de942..6a4a68535e8 100644 --- a/radio/src/targets/pl18/board.cpp +++ b/radio/src/targets/pl18/board.cpp @@ -21,6 +21,9 @@ #include "stm32_adc.h" +#include "stm32_ws2812.h" +#include "boards/generic_stm32/rgb_leds.h" + #include "board.h" #include "boards/generic_stm32/module_ports.h" @@ -163,6 +166,18 @@ void boardInit() touchPanelInit(); usbInit(); +#if defined(LED_STRIP_GPIO) + extern const stm32_pulse_timer_t _led_timer; + + ws2812_init(&_led_timer, LED_STRIP_LENGTH); + for (uint8_t i = 0; i < LED_STRIP_LENGTH; i++) { + ws2812_set_color(i, 0, 0, 50); + } + ws2812_update(&_led_timer); + +// stm32_pulse_set_cmp_val(&_led_timer, 998); // 998us +#endif + uint32_t press_start = 0; uint32_t press_end = 0; diff --git a/radio/src/targets/pl18/hal.h b/radio/src/targets/pl18/hal.h index 92e31fdb567..2ac7b9d8864 100644 --- a/radio/src/targets/pl18/hal.h +++ b/radio/src/targets/pl18/hal.h @@ -555,6 +555,21 @@ #define FLYSKY_HALL_DMA_Stream_RX LL_DMA_STREAM_2 #define FLYSKY_HALL_DMA_Stream_TX LL_DMA_STREAM_4 +// LED Strip +#define LED_STRIP_LENGTH 4 +#define LED_STRIP_GPIO GPIOH +#define LED_STRIP_GPIO_PIN_DATA LL_GPIO_PIN_12 // PH.12 / TIM5_CH3 +#define LED_STRIP_GPIO_PIN_AF LL_GPIO_AF_2 // TIM3/4/5 +#define LED_STRIP_TIMER TIM5 +#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) +#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH3 +#define LED_STRIP_TIMER_DMA DMA1 +#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMA_CHANNEL_6 +#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0 +#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn +#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler +#define LED_STRIP_REFRESH_PERIOD 50 //ms + // Internal Module #if defined(RADIO_PL18) #define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_GPIOI | RCC_AHB1Periph_DMA1)