- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2025-04-30 07:46:22
荣誉版主
- 积分
- 2319
|
4组串口UART使用DMA收发, 精品实战代码, 易用,高效,稳定 !
源自实际系统 @32G系列
非常容易使用, 将C文件添加至项目, 初始化后, 即可用.
仅3个函数, 包含一切UART串口操作, 适用90%以上场景, 从此告别串口驱动代码开发.
void UART1_Init(u32 btl); //初始化串口
u8 UART1_Send(void *pt, u16 Size); //发送数据
u16 UART1_Receive(u8 *buf, u16 Size); //接收数据
main() 函数演示 4个串口同时使用 DMA 收发数据, 收到数据后原路返回, 不限数据长度, 持续收发.
主要收发函数使用说明:
/**
* 原型: u8 UART1_Send( void *pt, u16 Size);
* @功能 串口发送数据. 写数据至发送缓冲区(循环池), 写完立即返回, 由DMA管理数据流向串口,
用户无须关心. 只要缓冲区有足够的空间, 可持续写入数据
* @参数 pt: 发送数据指针
* @参数 Size: 发送数量(字节)
* @返回值 当缓冲区没有足够的空间装入数据时返回1, 其它时候返回0
*/
/**
* 原型: u16 UART1_Receive(u8 *buf, u16 Size);
* @功能 读串口数据, 从缓冲区内读取数据. (DMA接收数据后存放至接收缓冲区,
应用代码必须定时查询读取, 否则循环池发生数据覆盖, 会丢失一部分数据, 没有提示, 但不影响后续收发)
* @参数 buf: 接收数据指针
* @参数 Size: Size期盼接收的字节数
* @返回值 实际接收字节数. 缓冲区空时(没有数据可读)返回0, 返回值<Size说明本次读取完成后,缓冲区已空.
返回值==Size说明本次读取完成后,缓冲区仍有数据可读. 任何时候,返回值不会大于Size
*/
4串口 DMA 实例代码 STC32G.rar
(101.49 KB, 下载次数: 546)
|
1
喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
-
+2
楼主威武~
|