Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
Stm32Uart.hxx
Go to the documentation of this file.
1
34#ifndef _FREERTOS_DRIVERS_ST_STM32F0XXUART_HXX_
35#define _FREERTOS_DRIVERS_ST_STM32F0XXUART_HXX_
36
37#include <cstdint>
38
39#include "stm32f_hal_conf.hxx"
40
41#include "Serial.hxx"
42
43#if defined (STM32F030x6) || defined (STM32F031x6) || defined (STM32F038xx)
44 #define NUM_USART 1
45#elif defined (STM32F030x8) || defined (STM32F042x6) || defined (STM32F048xx) \
46 || defined (STM32F051x8) || defined (STM32F058xx) || defined (STM32F070x6)
47 #define NUM_USART 2
48#elif defined (STM32L432xx)
49 #define NUM_USART 3
50 #define USART3 LPUART1
51 #define LPUART_IDX 2
52#elif defined (STM32L431xx)
53 #define NUM_USART 4
54 #define USART4 LPUART1
55 #define LPUART_IDX 3
56#elif defined (STM32F070xB) || defined (STM32F071xB) || defined (STM32F072xB) \
57 || defined (STM32F078xx)
58 #define NUM_USART 4
59 #define SHARED_UART3_8_IRQn USART3_4_IRQn
60#elif defined (STM32F303xC) || defined (STM32F303xE)
61 #define NUM_USART 5
62 #define USART4 UART4
63 #define USART5 UART5
64#elif defined (STM32F030xC)
65 #define NUM_USART 6
66 #define SHARED_UART3_8_IRQn USART3_6_IRQn
67#elif defined (STM32F091xC) || defined (STM32F098xx)
68 #define NUM_USART 8
69 #define SHARED_UART3_8_IRQn USART3_8_IRQn
70#elif defined (STM32F767xx)
71 #define NUM_USART 8
72 #define USART4 UART4
73 #define USART5 UART5
74 #define USART7 UART7
75 #define USART8 UART8
76#elif defined (STM32G0B1xx)
77 #define NUM_USART 8
78 #define SHARED_UART3_8_IRQn USART3_4_5_6_LPUART1_IRQn
79 #define USART7 LPUART1
80 #define USART8 LPUART2
81#else
82#error don_t know this STM32 MCU
83#endif
84
85
88class Stm32Uart : public Serial
89{
90public:
96 Stm32Uart(const char *name, USART_TypeDef *base, IRQn_Type interrupt);
97
101 {
102 }
103
110 void interrupt_handler();
111
114 int ioctl(File *file, unsigned long int key, unsigned long data) override;
115
116protected:
117 void enable() override;
118 void disable() override;
122 void tx_char() override;
123
124 IRQn_Type interrupt;
127 UART_HandleTypeDef uartHandle;
128
131 static uint8_t interrupt2_8EnableCnt;
132
133private:
137
139};
140
141#endif /* _FREERTOS_DRIVERS_ST_STM32F0XXUART_HXX_ */
const char * name
device name
Definition Devtab.hxx:266
Private data for a serial device.
Definition Serial.hxx:46
Specialization of Serial driver for STM32F0xx devices.
Definition Stm32Uart.hxx:89
void disable() override
function to disable device
IRQn_Type interrupt
interrupt of this device
void enable() override
function to enable device
Definition Stm32Uart.cxx:74
~Stm32Uart()
Destructor.
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 DISALLOW_COPY_AND_ASSIGN(TypeName)
Removes default copy-constructor and assignment added by C++.
Definition macros.h:171
File information.
Definition Devtab.hxx:52