123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- #ifndef USART_H
- #define USART_H
- #include "at32f403a_407.h"
- #include "ring_buf.h"
- #include "FreeRTOS.h"
- #include "semphr.h"
- #include <stdint.h>
- #include <stdbool.h>
- /*------индексы в массиве uarts --------------*/
- #define DEBUG_USART 0 // USART1
- #define MODEM_USART 1 // USART2
- #define EXT_1_USART 2 // USART3
- #define EXT_2_USART 3 // USART4
- #define EXT_3_USART 4 // USART5
- #define EXT_4_USART 5 // USART6
- /**
- * @brief Скорость USART
- */
- typedef enum
- {
- BRD_1200 = 0,
- BRD_2400,
- BRD_4800,
- BRD_9600,
- BRD_19200,
- BRD_38400,
- BRD_57600,
- BRD_115200,
- BRD_230400,
- BRD_460800,
- } rate_t;
- /**
- * @brief Длина данных USART
- */
- typedef enum
- {
- DATABITS_7 = 0,
- DATABITS_8,
- } databits_t;
- /**
- * @brief Количество стоповых бит USART
- */
- typedef enum
- {
- STOP_0_5 = 0,
- STOP_1,
- STOP_1_5,
- STOP_2,
- } stopbits_t;
- /**
- * @brief Четность прозрачного порта
- */
- typedef enum
- {
- NO_PAR = 0,
- ODD_PAR,
- EVEN_PAR,
- MAX_PARITY_TYPES
- } parity_t;
- typedef struct{
- rate_t baud; // Скорость порта
- parity_t parity; // Четность
- databits_t databits; // Число бит данных
- stopbits_t stopbits; // Число стоп-бит
- }uart_settings_t;
- typedef struct{
- QueueHandle_t *txQ;
- QueueHandle_t *rxQ;
- }transport_queue_t;
- typedef struct uart_s {
- bool enabled;
- uart_settings_t setting;
- //USART_TypeDef *addr;
- usart_type *addr;
- uint8_t *rx_fifo;
- uint8_t *tx_fifo;
- uint32_t buf_size;
- bool (*get_uart_settings)(uart_settings_t *struct_sett_value, uint8_t num_uart);
- transport_queue_t trans_queue;
- void (*set_uart_queue)(transport_queue_t *trans_queue, uint8_t num_uart);
- rbuf_t rx_buf;
- rbuf_t tx_buf;
- SemaphoreHandle_t rx_buf_sem;
- SemaphoreHandle_t tx_buf_sem;
-
- } uart_t;
- void usart_init_struct(void);
- void usart_reinit(void);
- void transport_enable_tx(uint8_t indx_uarts);
- #if 0
- void uart_irq_enable(uint8_t indx_uarts);
- int uart_getchar(uint8_t indx_uarts, unsigned int timeout);
- int uart_send_block(uint8_t indx_uarts, void *data, uint8_t len);
- void uart_putchar(uint8_t indx_uarts, uint8_t byte);
- uart_t* uart_get_settings_ptr(void);
- void putc_(void *p, char c);
- void putchar_(uint8_t c);
- #endif
- #endif /* #ifndef USART_H */
- /****************************** (C) LiteMesh ***************** end of file ****/
|