mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-23 08:15:30 +03:00
rewritten drv_uart to suck slightly less
tested w/o GPS git-svn-id: https://afrodevices.googlecode.com/svn/trunk/baseflight@382 7c89a4a9-59b9-e629-4cfe-3a2d53b20e61
This commit is contained in:
parent
1ff0036dec
commit
cbb580f753
10 changed files with 403 additions and 321 deletions
|
@ -1,17 +1,50 @@
|
|||
#pragma once
|
||||
|
||||
// USART1
|
||||
void uartInit(uint32_t speed);
|
||||
bool isUartAvailable(void);
|
||||
bool isUartTransmitEmpty(void);
|
||||
bool isUartTransmitDMAEmpty(void);
|
||||
uint8_t uartRead(void);
|
||||
uint8_t uartReadPoll(void);
|
||||
void uartWrite(uint8_t ch);
|
||||
void uartPrint(char *str);
|
||||
#define UART_BUFFER_SIZE 64
|
||||
|
||||
// USART2 (GPS, Spektrum)
|
||||
void uart2Init(uint32_t speed, uartReceiveCallbackPtr func, bool rxOnly);
|
||||
void uart2ChangeBaud(uint32_t speed);
|
||||
bool isUart2TransmitEmpty(void);
|
||||
void uart2Write(uint8_t ch);
|
||||
#define UART1_RX_BUFFER_SIZE 256
|
||||
#define UART1_TX_BUFFER_SIZE 256
|
||||
#define UART2_RX_BUFFER_SIZE 128
|
||||
#define UART2_TX_BUFFER_SIZE 64
|
||||
#define MAX_SERIAL_PORTS 2
|
||||
|
||||
// This is a bitmask
|
||||
typedef enum portmode_t {
|
||||
MODE_RX = 1,
|
||||
MODE_TX = 2,
|
||||
MODE_RXTX = 3
|
||||
} portmode_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t baudRate;
|
||||
uint32_t rxBufferSize;
|
||||
uint32_t txBufferSize;
|
||||
volatile uint8_t *rxBuffer;
|
||||
volatile uint8_t *txBuffer;
|
||||
uint32_t rxDMAPos;
|
||||
uint32_t rxBufferHead;
|
||||
uint32_t rxBufferTail;
|
||||
uint32_t txBufferHead;
|
||||
uint32_t txBufferTail;
|
||||
|
||||
DMA_Channel_TypeDef *rxDMAChannel;
|
||||
DMA_Channel_TypeDef *txDMAChannel;
|
||||
uint32_t rxDMAIrq;
|
||||
uint32_t txDMAIrq;
|
||||
bool txDMAEmpty;
|
||||
USART_TypeDef *USARTx;
|
||||
|
||||
uartReceiveCallbackPtr callback;
|
||||
portmode_t mode;
|
||||
} serialPort_t;
|
||||
|
||||
extern serialPort_t serialPort1;
|
||||
extern serialPort_t serialPort2;
|
||||
|
||||
serialPort_t *uartOpen(USART_TypeDef *USARTx, uartReceiveCallbackPtr callback, uint32_t baudRate, portmode_t mode);
|
||||
void uartChangeBaud(serialPort_t *s, uint32_t baudRate);
|
||||
bool isUartAvailable(serialPort_t *s);
|
||||
bool isUartTransmitEmpty(serialPort_t *s);
|
||||
uint8_t uartRead(serialPort_t *s);
|
||||
void uartWrite(serialPort_t *s, uint8_t ch);
|
||||
void uartPrint(serialPort_t *s, const char *str);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue