NavHAL 0.1.0
NAVRobotec's architecture-agnostic HAL for embedded systems.
Loading...
Searching...
No Matches
uart.h
Go to the documentation of this file.
1
24
25#ifndef CORTEX_M4_UART_H
26#define CORTEX_M4_UART_H
28#include <stdint.h>
34typedef enum {
35 UART1 = 1,
36 UART2 = 2,
37 UART6 = 6
39
57
58#define uart2_write(val) \
59 _Generic((val), \
60 char: uart2_write_char, \
61 signed char: uart2_write_int, \
62 unsigned char: uart2_write_int, \
63 short: uart2_write_int, \
64 unsigned short: uart2_write_int, \
65 int: uart2_write_int, \
66 unsigned int: uart2_write_int, \
67 long: uart2_write_int, \
68 unsigned long: uart2_write_int, \
69 long long: uart2_write_int, \
70 unsigned long long: uart2_write_int, \
71 float: uart2_write_float, \
72 double: uart2_write_float, \
73 const char *: uart2_write_string, \
74 char *: uart2_write_string)(val)
75
76#define uart1_write(val) \
77 _Generic((val), \
78 char: uart1_write_char, \
79 signed char: uart1_write_int, \
80 unsigned char: uart1_write_int, \
81 short: uart1_write_int, \
82 unsigned short: uart1_write_int, \
83 int: uart1_write_int, \
84 unsigned int: uart1_write_int, \
85 long: uart1_write_int, \
86 unsigned long: uart1_write_int, \
87 long long: uart1_write_int, \
88 unsigned long long: uart1_write_int, \
89 float: uart1_write_float, \
90 double: uart1_write_float, \
91 const char *: uart1_write_string, \
92 char *: uart1_write_string)(val)
93
94#define uart6_write(val) \
95 _Generic((val), \
96 char: uart6_write_char, \
97 signed char: uart6_write_int, \
98 unsigned char: uart6_write_int, \
99 short: uart6_write_int, \
100 unsigned short: uart6_write_int, \
101 int: uart6_write_int, \
102 unsigned int: uart6_write_int, \
103 long: uart6_write_int, \
104 unsigned long: uart6_write_int, \
105 long long: uart6_write_int, \
106 unsigned long long: uart6_write_int, \
107 float: uart6_write_float, \
108 double: uart6_write_float, \
109 const char *: uart6_write_string, \
110 char *: uart6_write_string)(val)
111 // end of UART_WRITE_MACROS
113
122
132void uart_init(uint32_t baudrate, hal_uart_t uart);
133
142void uart_write_char(char c, hal_uart_t uart);
143
152void uart_write_int(int32_t num, hal_uart_t uart);
153
163void uart_write_float(float num, hal_uart_t uart);
164
173void uart_write_string(const char *s, hal_uart_t uart);
174
175/* USART1 specific functions */
176
182void uart1_init(uint32_t baudrate);
183
187void uart1_write_char(char c);
188
192void uart1_write_int(int32_t num);
193
197void uart1_write_float(float num);
198
202void uart1_write_string(const char *s);
203
204/* USART2 specific functions */
205
209void uart2_init(uint32_t baudrate);
210void uart2_write_char(char c);
211void uart2_write_int(int32_t num);
212void uart2_write_float(float num);
213void uart2_write_string(const char *s);
214
215/* USART6 specific functions */
216
220void uart6_init(uint32_t baudrate);
221void uart6_write_char(char c);
222void uart6_write_int(int32_t num);
223void uart6_write_float(float num);
224void uart6_write_string(const char *s);
225
234char uart_read_char(hal_uart_t uart);
235
242int uart_available(hal_uart_t uart);
243
244/* USART1 specific receive functions */
245int uart1_available(void);
246char uart1_read_char(void);
247
248/* USART2 specific receive functions */
249int uart2_available(void);
250char uart2_read_char(void);
251
252/* USART6 specific receive functions */
253int uart6_available(void);
254char uart6_read_char(void);
255
274uint32_t uart2_read_until(char *buffer, uint32_t maxlen, char delimiter);
275 // end of UART_API
277
278#endif // !CORTEX_M4_UART_H
void uart6_write_int(int32_t num)
void uart_write_int(int32_t num, hal_uart_t uart)
Transmit a 32-bit signed integer via UART.
Definition uart.c:80
char uart1_read_char(void)
Read a single character from USART1.
Definition uart.c:449
int uart1_available(void)
Check if data is available to read from USART1.
Definition uart.c:509
void uart2_write_float(float num)
void uart6_write_float(float num)
void uart1_init(uint32_t baudrate)
Initialize USART1 peripheral.
Definition uart.c:129
void uart2_write_string(const char *s)
Definition main.c:97
uint32_t uart2_read_until(char *buffer, uint32_t maxlen, char delimiter)
Read characters into a buffer until a delimiter is found or max length is reached.
Definition uart.c:552
void uart_write_float(float num, hal_uart_t uart)
Transmit a floating-point number via UART.
Definition uart.c:95
void uart_write_char(char c, hal_uart_t uart)
Transmit a single character via the specified UART.
Definition uart.c:57
void uart6_init(uint32_t baudrate)
Initialize USART6 peripheral.
Definition uart.c:154
void uart1_write_int(int32_t num)
Transmit a 32-bit signed integer via USART1.
void uart1_write_float(float num)
Transmit a floating-point number via USART1.
char uart_read_char(hal_uart_t uart)
Read a single character from the specified UART.
Definition uart.c:432
char uart2_read_char(void)
Read a single character from USART2.
Definition uart.c:463
int uart_available(hal_uart_t uart)
Check if data is available to read.
Definition uart.c:492
char uart6_read_char(void)
Read a single character from USART6.
Definition uart.c:477
void uart1_write_char(char c)
Transmit a single character via USART1.
Definition uart.c:218
void uart_write_string(const char *s, hal_uart_t uart)
Transmit a null-terminated string via UART.
Definition uart.c:109
void uart6_write_char(char c)
void uart1_write_string(const char *s)
Transmit a null-terminated string via USART1.
void uart2_write_int(int32_t num)
void uart6_write_string(const char *s)
void uart2_write_char(char c)
Transmit a single character via USART2.
Definition main.c:61
void uart_init(uint32_t baudrate, hal_uart_t uart)
Initialize the specified UART peripheral.
Definition uart.c:42
int uart2_available(void)
Check if data is available to read from USART2.
Definition uart.c:521
int uart6_available(void)
Check if data is available to read from USART6.
Definition uart.c:533
void uart2_init(void)
Definition main.c:41
hal_uart_t
UART identifier enumeration.
Definition uart.h:34
@ UART2
USART2 - APB1 peripheral.
Definition uart.h:36
@ UART6
USART6 - APB2 peripheral.
Definition uart.h:37
@ UART1
USART1 - APB2 peripheral, typically higher speed.
Definition uart.h:35