41#include "FreeRTOSConfig.h"
46uint8_t Stm32Uart::interrupt2_8EnableCnt = 0;
55 , interrupt(interrupt)
62#if defined(GCC_ARMCM0)
64#elif defined(GCC_ARMCM3)
66 SetInterruptPriority(
interrupt, configMAX_SYSCALL_INTERRUPT_PRIORITY + 0x20);
68#error not defined how to set interrupt priority
77 uartHandle.Init.WordLength = UART_WORDLENGTH_8B;
80 uartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
82 uartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
84 volatile auto ret = HAL_UART_Init(&
uartHandle);
86 __HAL_UART_ENABLE_IT(&
uartHandle, UART_IT_RXNE);
87 __HAL_UART_ENABLE_IT(&
uartHandle, UART_IT_ERR);
93#if defined(SHARED_UART3_8_IRQn)
94 else if (
interrupt == SHARED_UART3_8_IRQn)
102#if defined(STM32G0B1xx)
105 else if (
interrupt == USART2_LPUART2_IRQn)
107 if (interrupt2_8EnableCnt++ == 0)
126#if defined(SHARED_UART3_8_IRQn)
127 else if (
interrupt == SHARED_UART3_8_IRQn)
135#if defined(STM32G0B1xx)
138 else if (
interrupt == USART2_LPUART2_IRQn)
140 if (--interrupt2_8EnableCnt == 0)
152 __HAL_UART_DISABLE_IT(&
uartHandle, UART_IT_TXE);
153 __HAL_UART_DISABLE_IT(&
uartHandle, UART_IT_ERR);
154 __HAL_UART_DISABLE_IT(&
uartHandle, UART_IT_RXNE);
166 volatile auto ret = HAL_UART_Init(&
uartHandle);
177 if (!__HAL_UART_GET_IT_SOURCE(&
uartHandle, UART_IT_TXE))
184 __HAL_UART_ENABLE_IT(&
uartHandle, UART_IT_TXE);
194 if (__HAL_UART_GET_IT(&
uartHandle, UART_IT_ORE))
198 __HAL_UART_CLEAR_IT(&
uartHandle, UART_CLEAR_OREF);
200 if (__HAL_UART_GET_IT(&
uartHandle, UART_IT_NE))
203 __HAL_UART_CLEAR_IT(&
uartHandle, UART_CLEAR_NEF);
205 if (__HAL_UART_GET_IT(&
uartHandle, UART_IT_FE))
208 __HAL_UART_CLEAR_IT(&
uartHandle, UART_CLEAR_FEF);
210 while (__HAL_UART_GET_IT(&
uartHandle, UART_IT_RXNE))
222 while (__HAL_UART_GET_IT(&
uartHandle, UART_IT_TXE) &&
223 __HAL_UART_GET_IT_SOURCE(&
uartHandle, UART_IT_TXE))
237 __HAL_UART_DISABLE_IT(&
uartHandle, UART_IT_TXE);
void signal_condition()
Signal the wakeup condition.
void signal_condition_from_isr()
Signal the wakeup condition from an ISR context.
size_t get(T *buf, size_t items)
remove a number of items from the buffer.
size_t put(const T *buf, size_t items)
Insert a number of items to the buffer.
Private data for a serial device.
DeviceBuffer< uint8_t > * rxBuf
receive buffer
DeviceBuffer< uint8_t > * txBuf
transmit buffer
unsigned int overrunCount
overrun count
void disable() override
function to disable device
IRQn_Type interrupt
interrupt of this device
void enable() override
function to enable device
Stm32Uart()
Default constructor.
static uint8_t interrupt3_to_8EnableCnt
number of times interrupts have been enabled on these UART channels
int ioctl(File *file, unsigned long int key, unsigned long data) override
Request an ioctl transaction.
UART_HandleTypeDef uartHandle
Handle to the UART setup.
void tx_char() override
Try and transmit a message.
void interrupt_handler()
handle an interrupt.
#define HASSERT(x)
Checks that the value of expression x is true, else terminates the current process.
#define TCBAUDRATE
Argument is the desired baud rate for the port.