10#ifndef SEMF_HARDWAREABSTRACTION_STM32_STM32UART_H_
11#define SEMF_HARDWAREABSTRACTION_STM32_STM32UART_H_
16#if defined(STM32) && defined(HAL_UART_MODULE_ENABLED)
41 SetFormat_WordLengthInvalid,
42 SetFormat_WireInvalid,
43 SetFormat_ParityInvalid,
44 SetFormat_StopBitsInvalid,
45 SetFormat_FlowInvalid,
46 WriteHardware_HalError,
47 WriteHardware_HalBusy,
48 WriteHardware_HalTimeout,
49 ReadHardware_HalError,
51 ReadHardware_HalTimeout
58 explicit Stm32Uart(UART_HandleTypeDef& hwHandle);
102 uint32_t
baud()
override;
122 void isrRead(UART_HandleTypeDef& uart);
136 void writeHardware(
const uint8_t data[],
size_t dataSize)
override;
143 void readHardware(uint8_t buffer[],
size_t bufferSize)
override;
151 HAL_StatusTypeDef halLock();
156 UART_HandleTypeDef* m_hwHandle;
158 static constexpr Error::ClassID kSemfClassId = Error::ClassID::Stm32Uart;
LinkedQueue is an managed single linked queue implementation.
UartHardware implemenation for STM32.
virtual ~Stm32Uart()=default
Stm32Uart(UART_HandleTypeDef &hwHandle)
Constructor.
void isrRead(UART_HandleTypeDef &uart)
Interrupt service routine for uart object receive.
uint32_t baud() override
Returns the currently used baud rate.
void stopWrite() override
Stm32Uart(const Stm32Uart &other)=delete
void writeHardware(const uint8_t data[], size_t dataSize) override
Hardware will write data in interrupt mode.
void readHardware(uint8_t buffer[], size_t bufferSize) override
Hardware will read data in interrupt mode.
static LinkedQueue< Stm32Uart > * queue()
Get the list with all uarts.
void isrWritten(UART_HandleTypeDef &uart)
Interrupt service routine for uart object transmit.
static void systemIsrRead(UART_HandleTypeDef &uart)
System-wide interrupt service routine for uart receive.
static void systemIsrWritten(UART_HandleTypeDef &uart)
System-wide interrupt service routine for uart transmit.
void setBaud(uint32_t baud) override
Sets the baud rate.
void setFormat(uint8_t bits, WireMode wire, Parity par, StopBits stop, FlowControl flow) override
Sets the format for the spi slave device.
Class for using UART hardware.