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:
parent
2af929797d
commit
3a156f98ab
17 changed files with 309 additions and 196 deletions
|
@ -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
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue