源码不能放出来,我的串口驱动,包装成对其他软件部分只有这些接口。无论485、232、用中断手动、用DMA,在这里都有实现,同时开了5个串口,都是不同的功能。
你可以参考一下库对于主从机对象的定义,其中有一些配置位,你也可以这样干,然后初始化时进行配置,在统一的串口对外API里进行处理。相信能写出稳健通用的串口驱动。
[C] 纯文本查看 复制代码 /* 配置API */
/* 配置Uart功能 */
extern void UartStdioInit(void);
/* 单独配置某个UART的波特率 */
extern uint32_t UartBaudRateSet(_UART_STDIO_HANDLE *pd, uint32_t Baud);
/* 功能API */
/* 发送一些字节 */
extern uint32_t UartWrite(_UART_STDIO_HANDLE *pd, const uint8_t *pcBuf, uint32_t ui32Len);
/* 发送一个字节(尽量不要使用单字节发送,性能较差,为了兼容一些旧API处理而创建) */
extern uint32_t UartWritec(_UART_STDIO_HANDLE *pd, uint8_t data);
/* 取一个接收到的字节 */
extern uint32_t UartGetc(_UART_STDIO_HANDLE *pd, uint8_t *data_rx);
/* 查询API */
/* 检查接收buffer是否为空 */
extern uint32_t IsUARTRxBufferEmpty(_UART_STDIO_HANDLE *pd);
/* 周期调用API(适用于DMA发送以及485支持) */
extern uint32_t UartBufferCheck(_UART_STDIO_HANDLE *pd);
|