2024-01-13 23:06:01 +01:00
|
|
|
#ifndef _BSP_UART_H
|
|
|
|
#define _BSP_UART_H
|
|
|
|
|
|
|
|
#include <stdint.h>
|
2024-02-22 17:09:35 +01:00
|
|
|
#include "gen/Apb3Uart.h"
|
2024-01-13 23:06:01 +01:00
|
|
|
|
2024-02-22 17:09:35 +01:00
|
|
|
#define uart_t apb3uart_t
|
2024-01-13 23:06:01 +01:00
|
|
|
|
2024-03-02 12:18:38 +01:00
|
|
|
static inline uint32_t uart_get_tx_free(volatile uart_t *reg){
|
|
|
|
return (reg->STATUS_REG >> 16) & 0xFF;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline uint32_t uart_get_rx_avail(volatile uart_t *reg){
|
|
|
|
return reg->STATUS_REG >> 24;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void uart_write(volatile uart_t *reg, uint8_t data){
|
2024-02-22 17:09:35 +01:00
|
|
|
while(get_uart_rx_tx_reg_tx_free(reg) == 0);
|
|
|
|
set_uart_rx_tx_reg_data(reg, data);
|
2024-01-13 23:06:01 +01:00
|
|
|
}
|
|
|
|
|
2024-03-02 12:18:38 +01:00
|
|
|
static inline inline uint8_t uart_read(volatile uart_t *reg){
|
2024-02-22 17:09:35 +01:00
|
|
|
uint32_t res = get_uart_rx_tx_reg_data(reg);
|
|
|
|
while((res&0x10000) == 0) res = get_uart_rx_tx_reg_data(reg);
|
2024-01-13 23:06:01 +01:00
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* _BSP_UART_H */
|