/// @file uart.h /// @brief uart driver for stm32u5xx /// @date 2023-08-06 /// @copyright Copyright (c) 2023 ggeta. All rights reserved. /// @version 0.1 init version - support block read/write and interrupt read/write #ifndef STM32U5XX_HAL_UART_H #define STM32U5XX_HAL_UART_H #include "global_variable.h" #include "queue.hpp" #include "reg_uart.h" #include "stm32u5xx.h" class Usart { private: USART_TypeDef *instance = nullptr; reg_uart_t *reg = nullptr; queue20u8 receive_queue; queue20u8 send_queue; public: Usart(); explicit Usart(USART_TypeDef *uart); void setup(USART_TypeDef *uart); // hal_status_e init_old(uart_init_options_s options) { hal_status_e init(uint32_t baudrate = 115200, uint32_t send_buffer_size = 64, uint32_t receive_buffer_size = 64, LL_UART_DATA_LENGTH data_length = LL_UART_DATA_LENGTH_8, LL_UART_PARITY parity = LL_UART_PARITY_NONE, LL_UART_STOP_BITS stop_bits = LL_UART_STOP_BITS_1, LL_UART_OVERSAMPLING oversampling = LL_UART_OVERSAMPLING_16); hal_status_e send(uint8_t *data, uint32_t size); hal_status_e receive(uint8_t *data, uint32_t size); hal_status_e get_line(uint8_t *data, uint32_t &size); hal_status_e send_massive(uint8_t *data, uint32_t *size); hal_status_e interrupt(); }; #endif // STM32U5XX_HAL_UART_H