BT Pins were not correctly defined in the driver

This commit is contained in:
bsongis
2015-01-31 15:01:21 +01:00
parent abe631b1eb
commit ce257527f3
+9 -50
View File
@@ -12,29 +12,16 @@
#include "string.h"
#include "../../fifo.h"
#define GPIO_EN_PIN GPIO_Pin_10
#define GPIO_EN_PORT GPIOG
#define BT_UART USART6
#define BT_UART_CLK RCC_APB2Periph_USART6
#define BT_UART_AF GPIO_AF_USART6
#define BT_UART_IRQn USART6_IRQn
#define GPIO_EN_GPIO_CLK RCC_AHB1Periph_GPIOG
#define GPIO_BRTS_GPIO_PIN GPIO_Pin_10
#define GPIO_BRTS_GPIO_PORT GPIOB
#define GPIO_BRTS_GPIO_CLK RCC_AHB1Periph_GPIOB
#define GPIO_BCTS_GPIO_PIN GPIO_Pin_11
#define GPIO_BCTS_GPIO_PORT GPIOB
#define GPIO_BCTS_GPIO_CLK RCC_AHB1Periph_GPIOB
#define BT_UART USART1
#define BT_UART_CLK RCC_APB2Periph_USART1
#define BT_UART_AF GPIO_AF_USART1
#define BT_UART_IRQn USART1_IRQn
#define BT_UART_GPIO_PIN_TX GPIO_Pin_6
#define BT_UART_GPIO_PIN_RX GPIO_Pin_7
#define BT_UART_GPIO_TX_PinSource GPIO_PinSource6
#define BT_UART_GPIO_RX_PinSource GPIO_PinSource7
#define BT_UART_GPIO_PORT GPIOB
#define BT_UART_GPIO_PORT GPIOG
#define BT_UART_GPIO_PIN_TX GPIO_Pin_14
#define BT_UART_GPIO_PIN_RX GPIO_Pin_9
#define BT_UART_GPIO_TX_PinSource GPIO_PinSource14
#define BT_UART_GPIO_RX_PinSource GPIO_PinSource9
Fifo<200> btTxFifo;
Fifo<200> btRxFifo;
@@ -44,30 +31,8 @@ int bt_open()
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_AHB1PeriphClockCmd( GPIO_BRTS_GPIO_CLK, ENABLE);
RCC_AHB1PeriphClockCmd( GPIO_EN_GPIO_CLK, ENABLE);
RCC_APB2PeriphClockCmd(BT_UART_CLK, ENABLE);
//PG10:as bluetooth EN
GPIO_InitStructure.GPIO_Pin = GPIO_EN_PIN;
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(GPIO_EN_PORT, &GPIO_InitStructure);
GPIO_SetBits(GPIO_EN_PORT, GPIO_EN_PIN);
//PB10,PB11
GPIO_InitStructure.GPIO_Pin = GPIO_BRTS_GPIO_PIN | GPIO_BCTS_GPIO_PIN;
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(GPIO_BRTS_GPIO_PORT, &GPIO_InitStructure);
//PB6:as TXD
//PB7:as RXD
GPIO_PinAFConfig(BT_UART_GPIO_PORT, BT_UART_GPIO_TX_PinSource, BT_UART_AF);
GPIO_PinAFConfig(BT_UART_GPIO_PORT, BT_UART_GPIO_RX_PinSource, BT_UART_AF);
@@ -97,8 +62,6 @@ int bt_open()
USART_Cmd(BT_UART, ENABLE);
USART_ITConfig(BT_UART, USART_IT_RXNE, ENABLE);
GPIO_ResetBits(GPIO_EN_PORT, GPIO_EN_PIN); //open bluetooth
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = BT_UART_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 8;
@@ -139,8 +102,6 @@ int bt_write(void *buffer, int len)
for (int i=0; i<len; ++i) {
btTxFifo.push(data[i]);
}
GPIO_ResetBits(GPIO_EN_PORT, GPIO_EN_PIN);
GPIO_ResetBits(GPIO_BRTS_GPIO_PORT, GPIO_BRTS_GPIO_PIN);
USART_ITConfig(BT_UART, USART_IT_TXE, ENABLE);
return 0;
}
@@ -149,7 +110,6 @@ int bt_read(void *buffer, int len)
{
int result = 0;
uint8_t *data = (uint8_t *)buffer;
GPIO_ResetBits(GPIO_BCTS_GPIO_PORT, GPIO_BCTS_GPIO_PIN);
while (1) {
uint8_t byte;
if (!btRxFifo.pop(byte))
@@ -162,6 +122,5 @@ int bt_read(void *buffer, int len)
int bt_close()
{
GPIO_SetBits(GPIO_EN_PORT, GPIO_EN_PIN);
return 0;
}