466f6fab86
- uart drv for stm32f4
65 lines
1.9 KiB
C
65 lines
1.9 KiB
C
/*
|
|
* stm32_uart.h
|
|
*
|
|
* Created on: Jul 24, 2016
|
|
* Author: tkl
|
|
*/
|
|
|
|
#ifndef SOURCE_FIRMWARE_ARCH_STM32F4XX_DRIVER_UART_STM32_UART_H_
|
|
#define SOURCE_FIRMWARE_ARCH_STM32F4XX_DRIVER_UART_STM32_UART_H_
|
|
|
|
#include "uart.h"
|
|
|
|
//! \brief Stm32f4 uart device.
|
|
struct stm32f4_uart {
|
|
const GPIO_InitTypeDef *gpio_init;
|
|
GPIO_TypeDef *gpio_port;
|
|
uint8_t pin_src_rx;
|
|
uint8_t pin_src_tx;
|
|
const USART_InitTypeDef *usart_init;
|
|
USART_TypeDef *usart_port;
|
|
uint16_t usart_it_select;
|
|
const NVIC_InitTypeDef *nvic_init;
|
|
};
|
|
|
|
//! \brief Open an uart device.
|
|
//! \param this The uart to open.
|
|
//! \retval -1 in error case.
|
|
int stm32f4_uart_open(const void *this);
|
|
|
|
//! \brief Close an uart device.
|
|
//! \param this The uart to close.
|
|
//! \retval -1 in error case.
|
|
int stm32f4_uart_close(const void *this);
|
|
|
|
//! \brief Read from an uart device.
|
|
//! \param this The uart to read from.
|
|
//! \param buffer The buffer to read to.
|
|
//! \param len The length of the buffer.
|
|
//! \retval -1 in error case, otherwise number of read characters.
|
|
int stm32f4_uart_read(const void *this, char *buffer, int len);
|
|
|
|
//! \brief Write to an uart device.
|
|
//! \param this The uart to write to.
|
|
//! \param buffer The buffer to write.
|
|
//! \param len The number of characters to write.
|
|
//! \retval -1 in error case, otherwise number of written characters.
|
|
int stm32f4_uart_write(const void *this, const char *buffer, int len);
|
|
|
|
//! \brief Set a callback for interrupt handling of the uart.
|
|
//! \param this The uart.
|
|
//! \param callback The callback to execute in interrupt case.
|
|
//! \param param The argument for the callback.
|
|
//! \retval -1 in error case.
|
|
int stm32f4_uart_set_cb(const void *this, const void *callback, const void *param);
|
|
|
|
static const struct uart_fp stm32f4_uart_fp = {
|
|
stm32f4_uart_open,
|
|
stm32f4_uart_close,
|
|
stm32f4_uart_read,
|
|
stm32f4_uart_write,
|
|
stm32f4_uart_set_cb
|
|
};
|
|
|
|
#endif /* SOURCE_FIRMWARE_ARCH_STM32F4XX_DRIVER_UART_STM32_UART_H_ */
|