#ifndef __UARTS_H__ #define __UARTS_H__ #include "lib.h" #include "main.h" // typedef void (*rx_interupt_cb_t)(uint8_t uart_index, uint8_t *data, uint16_t len); // typedef void (*tx_complete_cb_t)(void); // typedef struct { uint8_t uart_index; // 串口索引 USART_TypeDef *huart; DMA_TypeDef *dma; // 外部设置 uint32_t dma_rx_channel; // 外部设置 uint32_t dma_tx_channel; // 外部设置 uint16_t rx_index; // 接收数据索引 BOOL rx_dma_en; uint8_t *rxbuf; uint16_t rx_sta; uint16_t rxsize; uint16_t tx_index; BOOL tx_dma_en; uint8_t *txbuf; uint16_t txsize; // 接收中断回调 rx_interupt_cb_t rx_interupt_cb; // 发生完成回调 tx_complete_cb_t tx_complete_cb; } uart_t; extern uart_t *uart_create(USART_TypeDef *huart, BOOL rx_dma_en, uint16_t rxsize, rx_interupt_cb_t rx_cb, BOOL tx_dma_en, uint16_t txsize, tx_complete_cb_t tx_complete_cb); // 创建uart extern void uart_free(uart_t *uart); // 释放uart资源 extern void uart_recv_en(uart_t *uart); // 使能接收 extern void uart_send_data(uart_t *uart, uint8_t *data, uint16_t len); // 发送数据 extern void uart_reception_callback(uart_t *uart); // 接收中断回调 extern void uart_dma_reception_callback(uart_t *uart); // DMA接收中断回调 #endif // __UARTS_H__