[BSP] code cleanup for usart and gpio driver in STM32F4
This commit is contained in:
parent
756f2c67ab
commit
86358d0830
|
@ -88,12 +88,12 @@ static const struct pin_index pins[] =
|
||||||
{53, RCC_AHB1Periph_GPIOA, GPIOA, GPIO_Pin_4},
|
{53, RCC_AHB1Periph_GPIOA, GPIOA, GPIO_Pin_4},
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ITEM_NUM(items) sizeof(items)/sizeof(items[0])
|
#define ITEM_NUM(items) sizeof(items)/sizeof(items[0])
|
||||||
const struct pin_index * get_pin(uint8_t pin)
|
const struct pin_index *get_pin(uint8_t pin)
|
||||||
{
|
{
|
||||||
const struct pin_index* index;
|
const struct pin_index *index;
|
||||||
|
|
||||||
if(pin < ITEM_NUM(pins))
|
if (pin < ITEM_NUM(pins))
|
||||||
{
|
{
|
||||||
index = &pins[pin];
|
index = &pins[pin];
|
||||||
}
|
}
|
||||||
|
@ -110,12 +110,12 @@ void stm32_pin_write(rt_device_t dev, rt_base_t pin, rt_base_t value)
|
||||||
const struct pin_index *index;
|
const struct pin_index *index;
|
||||||
|
|
||||||
index = get_pin(pin);
|
index = get_pin(pin);
|
||||||
if(index == RT_NULL)
|
if (index == RT_NULL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(value == PIN_LOW)
|
if (value == PIN_LOW)
|
||||||
{
|
{
|
||||||
GPIO_ResetBits(index->gpio, index->pin);
|
GPIO_ResetBits(index->gpio, index->pin);
|
||||||
}
|
}
|
||||||
|
@ -133,12 +133,12 @@ int stm32_pin_read(rt_device_t dev, rt_base_t pin)
|
||||||
value = PIN_LOW;
|
value = PIN_LOW;
|
||||||
|
|
||||||
index = get_pin(pin);
|
index = get_pin(pin);
|
||||||
if(index == RT_NULL)
|
if (index == RT_NULL)
|
||||||
{
|
{
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(GPIO_ReadInputDataBit(index->gpio, index->pin) == Bit_RESET)
|
if (GPIO_ReadInputDataBit(index->gpio, index->pin) == Bit_RESET)
|
||||||
{
|
{
|
||||||
value = PIN_LOW;
|
value = PIN_LOW;
|
||||||
}
|
}
|
||||||
|
@ -156,7 +156,7 @@ void stm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
|
||||||
index = get_pin(pin);
|
index = get_pin(pin);
|
||||||
if(index == RT_NULL)
|
if (index == RT_NULL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -169,19 +169,19 @@ void stm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
|
||||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||||
|
|
||||||
if(mode == PIN_MODE_OUTPUT)
|
if (mode == PIN_MODE_OUTPUT)
|
||||||
{
|
{
|
||||||
/* output setting */
|
/* output setting */
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||||
}
|
}
|
||||||
else if(mode == PIN_MODE_INPUT)
|
else if (mode == PIN_MODE_INPUT)
|
||||||
{
|
{
|
||||||
/* input setting: not pull. */
|
/* input setting: not pull. */
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||||
}
|
}
|
||||||
else if(mode == PIN_MODE_INPUT_PULLUP)
|
else if (mode == PIN_MODE_INPUT_PULLUP)
|
||||||
{
|
{
|
||||||
/* input setting: pull up. */
|
/* input setting: pull up. */
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||||
|
|
|
@ -22,25 +22,25 @@
|
||||||
#include <rtdevice.h>
|
#include <rtdevice.h>
|
||||||
|
|
||||||
/* UART GPIO define. */
|
/* UART GPIO define. */
|
||||||
#define UART1_GPIO_TX GPIO_Pin_6
|
#define UART1_GPIO_TX GPIO_Pin_6
|
||||||
#define UART1_TX_PIN_SOURCE GPIO_PinSource6
|
#define UART1_TX_PIN_SOURCE GPIO_PinSource6
|
||||||
#define UART1_GPIO_RX GPIO_Pin_7
|
#define UART1_GPIO_RX GPIO_Pin_7
|
||||||
#define UART1_RX_PIN_SOURCE GPIO_PinSource7
|
#define UART1_RX_PIN_SOURCE GPIO_PinSource7
|
||||||
#define UART1_GPIO GPIOB
|
#define UART1_GPIO GPIOB
|
||||||
#define UART1_GPIO_RCC RCC_AHB1Periph_GPIOB
|
#define UART1_GPIO_RCC RCC_AHB1Periph_GPIOB
|
||||||
#define RCC_APBPeriph_UART1 RCC_APB2Periph_USART1
|
#define RCC_APBPeriph_UART1 RCC_APB2Periph_USART1
|
||||||
#define UART1_TX_DMA DMA1_Channel4
|
#define UART1_TX_DMA DMA1_Channel4
|
||||||
#define UART1_RX_DMA DMA1_Channel5
|
#define UART1_RX_DMA DMA1_Channel5
|
||||||
|
|
||||||
#define UART2_GPIO_TX GPIO_Pin_2
|
#define UART2_GPIO_TX GPIO_Pin_2
|
||||||
#define UART2_TX_PIN_SOURCE GPIO_PinSource2
|
#define UART2_TX_PIN_SOURCE GPIO_PinSource2
|
||||||
#define UART2_GPIO_RX GPIO_Pin_3
|
#define UART2_GPIO_RX GPIO_Pin_3
|
||||||
#define UART2_RX_PIN_SOURCE GPIO_PinSource3
|
#define UART2_RX_PIN_SOURCE GPIO_PinSource3
|
||||||
#define UART2_GPIO GPIOA
|
#define UART2_GPIO GPIOA
|
||||||
#define UART2_GPIO_RCC RCC_AHB1Periph_GPIOA
|
#define UART2_GPIO_RCC RCC_AHB1Periph_GPIOA
|
||||||
#define RCC_APBPeriph_UART2 RCC_APB1Periph_USART2
|
#define RCC_APBPeriph_UART2 RCC_APB1Periph_USART2
|
||||||
#define UART2_TX_DMA DMA1_Channel4
|
#define UART2_TX_DMA DMA1_Channel4
|
||||||
#define UART2_RX_DMA DMA1_Channel5
|
#define UART2_RX_DMA DMA1_Channel5
|
||||||
|
|
||||||
#define UART3_GPIO_TX GPIO_Pin_8
|
#define UART3_GPIO_TX GPIO_Pin_8
|
||||||
#define UART3_TX_PIN_SOURCE GPIO_PinSource8
|
#define UART3_TX_PIN_SOURCE GPIO_PinSource8
|
||||||
|
@ -55,13 +55,13 @@
|
||||||
/* STM32 uart driver */
|
/* STM32 uart driver */
|
||||||
struct stm32_uart
|
struct stm32_uart
|
||||||
{
|
{
|
||||||
USART_TypeDef* uart_device;
|
USART_TypeDef *uart_device;
|
||||||
IRQn_Type irq;
|
IRQn_Type irq;
|
||||||
};
|
};
|
||||||
|
|
||||||
static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_configure *cfg)
|
static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_configure *cfg)
|
||||||
{
|
{
|
||||||
struct stm32_uart* uart;
|
struct stm32_uart *uart;
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
|
|
||||||
RT_ASSERT(serial != RT_NULL);
|
RT_ASSERT(serial != RT_NULL);
|
||||||
|
@ -97,7 +97,7 @@ static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_c
|
||||||
|
|
||||||
static rt_err_t stm32_control(struct rt_serial_device *serial, int cmd, void *arg)
|
static rt_err_t stm32_control(struct rt_serial_device *serial, int cmd, void *arg)
|
||||||
{
|
{
|
||||||
struct stm32_uart* uart;
|
struct stm32_uart *uart;
|
||||||
|
|
||||||
RT_ASSERT(serial != RT_NULL);
|
RT_ASSERT(serial != RT_NULL);
|
||||||
uart = (struct stm32_uart *)serial->parent.user_data;
|
uart = (struct stm32_uart *)serial->parent.user_data;
|
||||||
|
@ -119,7 +119,7 @@ static rt_err_t stm32_control(struct rt_serial_device *serial, int cmd, void *ar
|
||||||
|
|
||||||
static int stm32_putc(struct rt_serial_device *serial, char c)
|
static int stm32_putc(struct rt_serial_device *serial, char c)
|
||||||
{
|
{
|
||||||
struct stm32_uart* uart;
|
struct stm32_uart *uart;
|
||||||
|
|
||||||
RT_ASSERT(serial != RT_NULL);
|
RT_ASSERT(serial != RT_NULL);
|
||||||
uart = (struct stm32_uart *)serial->parent.user_data;
|
uart = (struct stm32_uart *)serial->parent.user_data;
|
||||||
|
@ -133,7 +133,7 @@ static int stm32_putc(struct rt_serial_device *serial, char c)
|
||||||
static int stm32_getc(struct rt_serial_device *serial)
|
static int stm32_getc(struct rt_serial_device *serial)
|
||||||
{
|
{
|
||||||
int ch;
|
int ch;
|
||||||
struct stm32_uart* uart;
|
struct stm32_uart *uart;
|
||||||
|
|
||||||
RT_ASSERT(serial != RT_NULL);
|
RT_ASSERT(serial != RT_NULL);
|
||||||
uart = (struct stm32_uart *)serial->parent.user_data;
|
uart = (struct stm32_uart *)serial->parent.user_data;
|
||||||
|
@ -166,13 +166,13 @@ struct rt_serial_device serial1;
|
||||||
|
|
||||||
void USART1_IRQHandler(void)
|
void USART1_IRQHandler(void)
|
||||||
{
|
{
|
||||||
struct stm32_uart* uart;
|
struct stm32_uart *uart;
|
||||||
|
|
||||||
uart = &uart1;
|
uart = &uart1;
|
||||||
|
|
||||||
/* enter interrupt */
|
/* enter interrupt */
|
||||||
rt_interrupt_enter();
|
rt_interrupt_enter();
|
||||||
if(USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET)
|
if (USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET)
|
||||||
{
|
{
|
||||||
rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND);
|
rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND);
|
||||||
/* clear interrupt */
|
/* clear interrupt */
|
||||||
|
@ -200,13 +200,13 @@ struct rt_serial_device serial2;
|
||||||
|
|
||||||
void USART2_IRQHandler(void)
|
void USART2_IRQHandler(void)
|
||||||
{
|
{
|
||||||
struct stm32_uart* uart;
|
struct stm32_uart *uart;
|
||||||
|
|
||||||
uart = &uart2;
|
uart = &uart2;
|
||||||
|
|
||||||
/* enter interrupt */
|
/* enter interrupt */
|
||||||
rt_interrupt_enter();
|
rt_interrupt_enter();
|
||||||
if(USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET)
|
if (USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET)
|
||||||
{
|
{
|
||||||
rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND);
|
rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND);
|
||||||
/* clear interrupt */
|
/* clear interrupt */
|
||||||
|
@ -234,13 +234,13 @@ struct rt_serial_device serial3;
|
||||||
|
|
||||||
void USART3_IRQHandler(void)
|
void USART3_IRQHandler(void)
|
||||||
{
|
{
|
||||||
struct stm32_uart* uart;
|
struct stm32_uart *uart;
|
||||||
|
|
||||||
uart = &uart3;
|
uart = &uart3;
|
||||||
|
|
||||||
/* enter interrupt */
|
/* enter interrupt */
|
||||||
rt_interrupt_enter();
|
rt_interrupt_enter();
|
||||||
if(USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET)
|
if (USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET)
|
||||||
{
|
{
|
||||||
rt_hw_serial_isr(&serial3, RT_SERIAL_EVENT_RX_IND);
|
rt_hw_serial_isr(&serial3, RT_SERIAL_EVENT_RX_IND);
|
||||||
/* clear interrupt */
|
/* clear interrupt */
|
||||||
|
@ -321,7 +321,7 @@ static void GPIO_Configuration(void)
|
||||||
#endif /* RT_USING_UART3 */
|
#endif /* RT_USING_UART3 */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void NVIC_Configuration(struct stm32_uart* uart)
|
static void NVIC_Configuration(struct stm32_uart *uart)
|
||||||
{
|
{
|
||||||
NVIC_InitTypeDef NVIC_InitStructure;
|
NVIC_InitTypeDef NVIC_InitStructure;
|
||||||
|
|
||||||
|
@ -335,7 +335,7 @@ static void NVIC_Configuration(struct stm32_uart* uart)
|
||||||
|
|
||||||
int stm32_hw_usart_init(void)
|
int stm32_hw_usart_init(void)
|
||||||
{
|
{
|
||||||
struct stm32_uart* uart;
|
struct stm32_uart *uart;
|
||||||
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
|
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
|
||||||
|
|
||||||
RCC_Configuration();
|
RCC_Configuration();
|
||||||
|
|
Loading…
Reference in New Issue