博客
关于我
STM32HAL库DMA模式串口收发
阅读量:155 次
发布时间:2019-02-28

本文共 840 字,大约阅读时间需要 2 分钟。

STM32 DMA串口实现技术文档

简单了解

在开发STM32微控制器时,串口通信有三种常见模式:普通模式、中断模式和DMA模式。本文将介绍第一种普通模式,并重点描述DMA模式的实现。

本文的学习目标是实现DMA串口的数据收发功能,发送数据时通过LED灯电平翻转来指示传输状态。

实现步骤

1. 项目准备

在现有工程中,使用STM32CubeMX配置开发环境,添加DMA支持到USART1(或相应的UART接口)。配置DMA缓冲区,设置RX(接收)为循环接收,TX(发送)为单次发送。

2. 代码配置

添加DMA数据缓冲区定义:

#define UART1_DMAuint8_t TdataDMA[] = { "welcome to uart DMA!\r\n" };uint8_t Rdata;

3. 主程序配置

在主函数中添加以下代码:

#ifdef UART1_DMAHAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);printf("WELCOME TO DMA test!\r\n");HAL_Delay(2000);#endif

4. 回调函数配置

添加回调函数:

// 回调函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){#ifdef UART1_DMAHAL_UART_Transmit(&huart1, &Rdata, 1, 0xff);HAL_UART_Receive_DMA(&huart1, &Rdata, 1);#endif}

总结

在本次开发中,我们采用了DMA模式来实现串口通信。为了保证数据的完整性和及时性,回调函数中使用普通发送结合DMA接收,避免了DMA发送可能导致的数据丢失问题。这样既保证了接收数据的完整性,又确保了发送数据的及时性。

通过本次项目,我们对STM32 DMA串口实现有了更深入的理解,为后续的高效串口通信打下了坚实的基础。

转载地址:http://qkmc.baihongyu.com/

你可能感兴趣的文章
Python+requests+unittest执行接口自动化测试详情
查看>>
python+requests+unittest执行自动化接口测试!
查看>>
Python+Requests编码识别Bug
查看>>
python函数编写_[零基础学python]传说中的函数编写条规
查看>>
Python+selenium —— UI自动化之鼠标操作
查看>>
python函数注释,参数后面加冒号:,函数后面的箭头→是什么?
查看>>
Python+Selenium+Threading进行兼容性测试
查看>>
Python+selenium+unittest的GUI自动化框架实现
查看>>
python函数拟合不规则曲线_Python计算&绘图——曲线拟合问题(转)
查看>>
python函数定义的基本格式_零基础学python-2.19 定义函数、调用函数与默认参数
查看>>
Python+Selenium之数据驱动测试的实现
查看>>
python函数定义与使用+返回值简解
查看>>
Python+Selenium登录
查看>>
Python日期时间模块
查看>>
Python函数合集:足足68个内置函数请收好!
查看>>
Python+Selenium自动化测试项目实战
查看>>
Python+Selenium自动化测试项目实战【建议收藏】
查看>>
Python+Selenium自动化测试:Page Object模式
查看>>
python+selenium进行cnblog的自动化登录测试
查看>>
Python函数只返回第一个值而不是数据框
查看>>