STM32 —— 串口通信3 DMA 通信
STM32 —— 串口通信3 DMA 通信
实验目的
STM32 采用串口 DMA 方式,用 115200bps 或更高速率向上位机连续发送数据
实验原理
具体关于 DMA 的实验原理可以看我的另一篇博客:STM32 —— DMA 发送与接收数据详解
通过 DMA 对上位机发送数据十分简单,只需要使用 HAL_UART_Transmit_DMA 函数即可
HAL 库方法
CubeMX 项目配置
设置 RCC
设置 SYS
设置 USART1
添加 DMA1
在添加 DMA 的时候,由于我们目前只是实现向上位机输出,其他选项直接默认即可
代码设计
// 定义字符串
uint8_t str[] = "Hello ppqppl!\r\n";
// 在 main 函数的循环中添加发送语句
AL_UART_Transmit_DMA(&huart1,(uint8_t *)str,sizeof(str));
标准库方法
若有需要,后续会更新标准库写法
寄存器方法
若有需要,后续会更新寄存器写法
运行测试
虚拟串口测试
接线示例
运行结果
波形检测
只有延时 50 ms 时会产生冲击信号
错误解决方法
目前尚未出现报错,如有错误将及时更新