1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-23 00:05:33 +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,10 +18,11 @@
#include <stdbool.h>
#include <stdint.h>
#include "platform.h"
#include <platform.h>
#include "drivers/gpio.h"
#include "drivers/transponder_ir.h"
#include "nvic.h"
#include "drivers/nvic.h"
#ifndef TRANSPONDER_GPIO
#define USE_TRANSPONDER_ON_DMA1_CHANNEL3
@ -34,6 +35,8 @@
#define TRANSPONDER_TIMER_APB2_PERIPHERAL RCC_APB2Periph_TIM16
#define TRANSPONDER_DMA_CHANNEL DMA1_Channel3
#define TRANSPONDER_IRQ DMA1_Channel3_IRQn
#define TRANSPONDER_DMA_TC_FLAG DMA1_FLAG_TC3
#define TRANSPONDER_DMA_HANDLER_IDENTIFER DMA1_CH3_HANDLER
#endif
void transponderIrHardwareInit(void)
@ -116,39 +119,6 @@ void transponderIrHardwareInit(void)
NVIC_Init(&NVIC_InitStructure);
}
#ifdef USE_TRANSPONDER_ON_DMA1_CHANNEL3
void DMA1_Channel3_IRQHandler(void)
{
if (DMA_GetFlagStatus(DMA1_FLAG_TC3)) {
transponderIrDataTransferInProgress = 0;
DMA_Cmd(DMA1_Channel3, DISABLE); // disable DMA channel
DMA_ClearFlag(DMA1_FLAG_TC3); // clear DMA1 Channel transfer complete flag
}
}
#endif
#ifdef USE_TRANSPONDER_ON_DMA1_CHANNEL2
void DMA1_Channel2_IRQHandler(void)
{
if (DMA_GetFlagStatus(DMA1_FLAG_TC2)) {
transponderIrDataTransferInProgress = 0;
DMA_Cmd(DMA1_Channel2, DISABLE); // disable DMA channel
DMA_ClearFlag(DMA1_FLAG_TC2); // clear DMA1 Channel transfer complete flag
}
}
#endif
#ifdef USE_TRANSPONDER_ON_DMA1_CHANNEL7
void DMA1_Channel7_IRQHandler(void)
{
if (DMA_GetFlagStatus(DMA1_FLAG_TC7)) {
transponderIrDataTransferInProgress = 0;
DMA_Cmd(DMA1_Channel7, DISABLE); // disable DMA channel
DMA_ClearFlag(DMA1_FLAG_TC7); // clear DMA1 Channel transfer complete flag
}
}
#endif
void transponderIrDMAEnable(void)
{
DMA_SetCurrDataCounter(TRANSPONDER_DMA_CHANNEL, TRANSPONDER_DMA_BUFFER_SIZE); // load number of bytes to be transferred
@ -157,4 +127,24 @@ void transponderIrDMAEnable(void)
DMA_Cmd(TRANSPONDER_DMA_CHANNEL, ENABLE);
}
void transponderIrDisable(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
DMA_Cmd(TRANSPONDER_DMA_CHANNEL, DISABLE);
TIM_Cmd(TRANSPONDER_TIMER, DISABLE);
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TRANSPONDER_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TRANSPONDER_GPIO, &GPIO_InitStructure);
#ifdef TRANSPONDER_INVERTED
digitalHi(TRANSPONDER_GPIO, TRANSPONDER_PIN);
#else
digitalLo(TRANSPONDER_GPIO, TRANSPONDER_PIN);
#endif
}