[Taranis X9E] BT Cosmetics
This commit is contained in:
@@ -12,23 +12,6 @@
|
||||
#include "string.h"
|
||||
#include "../../fifo.h"
|
||||
|
||||
#define BT_UART USART6
|
||||
#define BT_UART_AF GPIO_AF_USART6
|
||||
#define BT_UART_IRQn USART6_IRQn
|
||||
|
||||
#define BT_UART_GPIO_CLK_TXRX RCC_AHB1Periph_GPIOG
|
||||
#define BT_UART_GPIO_PORT_TXRX GPIOG
|
||||
#define BT_UART_GPIO_PIN_TX GPIO_Pin_14
|
||||
#define BT_UART_GPIO_PIN_RX GPIO_Pin_9
|
||||
#define BT_UART_GPIO_CLK_EN RCC_AHB1Periph_GPIOD
|
||||
#define BT_UART_GPIO_PORT_EN GPIOD
|
||||
#define BT_UART_GPIO_PIN_EN GPIO_Pin_11
|
||||
#define BT_UART_GPIO_CLK_BRTS RCC_AHB1Periph_GPIOB
|
||||
#define BT_UART_GPIO_PORT_BRTS GPIOB
|
||||
#define BT_UART_GPIO_PIN_BRTS GPIO_Pin_10
|
||||
#define BT_UART_GPIO_TX_PinSource GPIO_PinSource14
|
||||
#define BT_UART_GPIO_RX_PinSource GPIO_PinSource9
|
||||
|
||||
Fifo<200> btTxFifo;
|
||||
Fifo<200> btRxFifo;
|
||||
|
||||
@@ -37,34 +20,26 @@ int bt_open()
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
|
||||
RCC_AHB1PeriphClockCmd(BT_UART_GPIO_CLK_TXRX, ENABLE);
|
||||
RCC_AHB1PeriphClockCmd(BT_UART_GPIO_CLK_EN, ENABLE);
|
||||
RCC_AHB1PeriphClockCmd(BT_UART_GPIO_CLK_BRTS, ENABLE);
|
||||
RCC_AHB1PeriphClockCmd(BT_RCC_AHB1Periph, ENABLE);
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_EN;
|
||||
GPIO_InitStructure.GPIO_Pin = BT_GPIO_PIN_EN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(BT_UART_GPIO_PORT_EN, &GPIO_InitStructure);
|
||||
GPIO_Init(BT_GPIO_EN, &GPIO_InitStructure);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_BRTS;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(BT_UART_GPIO_PORT_BRTS, &GPIO_InitStructure);
|
||||
GPIO_InitStructure.GPIO_Pin = BT_GPIO_PIN_BRTS;
|
||||
GPIO_Init(BT_GPIO_BRTS, &GPIO_InitStructure);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_TX|BT_UART_GPIO_PIN_RX;
|
||||
GPIO_InitStructure.GPIO_Pin = BT_GPIO_PIN_TX|BT_GPIO_PIN_RX;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_Init(BT_UART_GPIO_PORT_TXRX, &GPIO_InitStructure);
|
||||
GPIO_Init(BT_GPIO_TXRX, &GPIO_InitStructure);
|
||||
|
||||
GPIO_PinAFConfig(BT_UART_GPIO_PORT_TXRX, BT_UART_GPIO_TX_PinSource, BT_UART_AF);
|
||||
GPIO_PinAFConfig(BT_UART_GPIO_PORT_TXRX, BT_UART_GPIO_RX_PinSource, BT_UART_AF);
|
||||
GPIO_PinAFConfig(BT_GPIO_TXRX, BT_GPIO_PinSource_TX, BT_GPIO_AF);
|
||||
GPIO_PinAFConfig(BT_GPIO_TXRX, BT_GPIO_PinSource_RX, BT_GPIO_AF);
|
||||
|
||||
USART_InitStructure.USART_BaudRate = 115200;
|
||||
USART_InitStructure.USART_Parity = USART_Parity_No;
|
||||
@@ -72,20 +47,20 @@ int bt_open()
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
|
||||
USART_Init(BT_UART, &USART_InitStructure);
|
||||
USART_Init(BT_USART, &USART_InitStructure);
|
||||
|
||||
USART_Cmd(BT_UART, ENABLE);
|
||||
USART_ITConfig(BT_UART, USART_IT_RXNE, ENABLE);
|
||||
USART_Cmd(BT_USART, ENABLE);
|
||||
USART_ITConfig(BT_USART, USART_IT_RXNE, ENABLE);
|
||||
|
||||
NVIC_InitTypeDef NVIC_InitStructure;
|
||||
NVIC_InitStructure.NVIC_IRQChannel = BT_UART_IRQn;
|
||||
NVIC_InitStructure.NVIC_IRQChannel = BT_USART_IRQn;
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 8;
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
|
||||
GPIO_SetBits(BT_UART_GPIO_PORT_BRTS, BT_UART_GPIO_PIN_BRTS);
|
||||
GPIO_ResetBits(BT_UART_GPIO_PORT_EN, BT_UART_GPIO_PIN_EN); // open bluetooth
|
||||
GPIO_SetBits(BT_GPIO_BRTS, BT_GPIO_PIN_BRTS);
|
||||
GPIO_ResetBits(BT_GPIO_EN, BT_GPIO_PIN_EN); // open bluetooth
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -95,23 +70,23 @@ uint8_t bt_state = 0;
|
||||
extern "C" void USART6_IRQHandler(void)
|
||||
{
|
||||
#if 1
|
||||
if (USART_GetITStatus(BT_UART, USART_IT_RXNE) != RESET) {
|
||||
USART_ClearITPendingBit(BT_UART, USART_IT_RXNE);
|
||||
uint8_t byte = USART_ReceiveData(BT_UART);
|
||||
if (USART_GetITStatus(BT_USART, USART_IT_RXNE) != RESET) {
|
||||
USART_ClearITPendingBit(BT_USART, USART_IT_RXNE);
|
||||
uint8_t byte = USART_ReceiveData(BT_USART);
|
||||
btRxFifo.push(byte);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
if (USART_GetITStatus(BT_UART, USART_IT_TXE) != RESET) {
|
||||
if (USART_GetITStatus(BT_USART, USART_IT_TXE) != RESET) {
|
||||
uint8_t byte;
|
||||
bool result = btTxFifo.pop(byte);
|
||||
if (result) {
|
||||
USART_SendData(BT_UART, byte);
|
||||
USART_SendData(BT_USART, byte);
|
||||
}
|
||||
else {
|
||||
USART_ITConfig(BT_UART, USART_IT_TXE, DISABLE);
|
||||
GPIO_SetBits(BT_UART_GPIO_PORT_BRTS, BT_UART_GPIO_PIN_BRTS);
|
||||
USART_ITConfig(BT_USART, USART_IT_TXE, DISABLE);
|
||||
GPIO_SetBits(BT_GPIO_BRTS, BT_GPIO_PIN_BRTS);
|
||||
bt_state = 0;
|
||||
}
|
||||
}
|
||||
@@ -131,11 +106,11 @@ void bt_wakeup(void)
|
||||
{
|
||||
if (bt_state < 2 && !btTxFifo.empty()) {
|
||||
if (bt_state == 0) {
|
||||
GPIO_ResetBits(BT_UART_GPIO_PORT_BRTS, BT_UART_GPIO_PIN_BRTS);
|
||||
GPIO_ResetBits(BT_GPIO_BRTS, BT_GPIO_PIN_BRTS);
|
||||
bt_state = 1;
|
||||
}
|
||||
else {
|
||||
USART_ITConfig(BT_UART, USART_IT_TXE, ENABLE);
|
||||
USART_ITConfig(BT_USART, USART_IT_TXE, ENABLE);
|
||||
bt_state = 2;
|
||||
}
|
||||
}
|
||||
@@ -157,6 +132,6 @@ int bt_read(void *buffer, int len)
|
||||
|
||||
int bt_close()
|
||||
{
|
||||
GPIO_SetBits(BT_UART_GPIO_PORT_EN, BT_UART_GPIO_PIN_EN); // close bluetooth
|
||||
GPIO_SetBits(BT_GPIO_EN, BT_GPIO_PIN_EN); // close bluetooth
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user