STM32 —— 串口通信3 DMA 通信

STM32 —— 串口通信3 DMA 通信

实验目的

STM32 采用串口 DMA 方式,用 115200bps 或更高速率向上位机连续发送数据

实验原理

具体关于 DMA 的实验原理可以看我的另一篇博客:STM32 —— DMA 发送与接收数据详解

通过 DMA 对上位机发送数据十分简单,只需要使用 HAL_UART_Transmit_DMA 函数即可

HAL 库方法

CubeMX 项目配置

设置 RCC

image

image

设置 SYS

image

设置 USART1

image

添加 DMA1

image

在添加 DMA 的时候,由于我们目前只是实现向上位机输出,其他选项直接默认即可

代码设计

// 定义字符串
uint8_t str[] = "Hello ppqppl!\r\n";

// 在 main 函数的循环中添加发送语句
AL_UART_Transmit_DMA(&huart1,(uint8_t *)str,sizeof(str));

标准库方法

若有需要,后续会更新标准库写法

寄存器方法

若有需要,后续会更新寄存器写法

运行测试

虚拟串口测试

image

接线示例

image

image

image

运行结果

image

波形检测

image

只有延时 50 ms 时会产生冲击信号

错误解决方法

目前尚未出现报错,如有错误将及时更新

参考文档

  1. 基于HAL库实现DMA串口通信

  2. STM32采用串口DMA方式以高速率向上位机连续发送数据

posted @ 2022-10-25 00:28  ppqppl  阅读(121)  评论(0编辑  收藏  举报