1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-23 08:15:30 +03:00

Fix LED_STRIP feature // Add DMA drivers // UART fixes

This commit is contained in:
borisbstyle 2016-02-10 22:36:05 +01:00
parent 2af929797d
commit 3a156f98ab
17 changed files with 309 additions and 196 deletions

View file

@ -18,7 +18,7 @@
#include <stdbool.h>
#include <stdint.h>
#include "platform.h"
#include <platform.h>
#include "gpio.h"
#include "nvic.h"
@ -27,7 +27,6 @@
#include "drivers/light_ws2811strip.h"
#ifndef WS2811_GPIO
#define USE_LED_STRIP_ON_DMA1_CHANNEL3
#define WS2811_GPIO GPIOB
#define WS2811_GPIO_AHB_PERIPHERAL RCC_AHBPeriph_GPIOB
#define WS2811_GPIO_AF GPIO_AF_1
@ -37,6 +36,9 @@
#define WS2811_TIMER_APB2_PERIPHERAL RCC_APB2Periph_TIM16
#define WS2811_DMA_CHANNEL DMA1_Channel3
#define WS2811_IRQ DMA1_Channel3_IRQn
#define WS2811_DMA_TC_FLAG DMA1_FLAG_TC3
#define WS2811_DMA_HANDLER_IDENTIFER DMA1_CH3_HANDLER
#endif
void ws2811LedStripHardwareInit(void)
@ -124,39 +126,6 @@ void ws2811LedStripHardwareInit(void)
ws2811UpdateStrip();
}
#ifdef USE_LED_STRIP_ON_DMA1_CHANNEL3
void DMA1_Channel3_IRQHandler(void)
{
if (DMA_GetFlagStatus(DMA1_FLAG_TC3)) {
ws2811LedDataTransferInProgress = 0;
DMA_Cmd(DMA1_Channel3, DISABLE); // disable DMA channel
DMA_ClearFlag(DMA1_FLAG_TC3); // clear DMA1 Channel transfer complete flag
}
}
#endif
#ifdef USE_LED_STRIP_ON_DMA1_CHANNEL2
void DMA1_Channel2_IRQHandler(void)
{
if (DMA_GetFlagStatus(DMA1_FLAG_TC2)) {
ws2811LedDataTransferInProgress = 0;
DMA_Cmd(DMA1_Channel2, DISABLE); // disable DMA channel
DMA_ClearFlag(DMA1_FLAG_TC2); // clear DMA1 Channel transfer complete flag
}
}
#endif
#ifdef USE_LED_STRIP_ON_DMA1_CHANNEL7
void DMA1_Channel7_IRQHandler(void)
{
if (DMA_GetFlagStatus(DMA1_FLAG_TC7)) {
ws2811LedDataTransferInProgress = 0;
DMA_Cmd(DMA1_Channel7, DISABLE); // disable DMA channel
DMA_ClearFlag(DMA1_FLAG_TC7); // clear DMA1 Channel transfer complete flag
}
}
#endif
void ws2811LedStripDMAEnable(void)
{
DMA_SetCurrDataCounter(WS2811_DMA_CHANNEL, WS2811_DMA_BUFFER_SIZE); // load number of bytes to be transferred