OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2317|回复: 2

各位大神来看看关于STM32的DMA传输问题!!!!

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-11-25
在线时间
0 小时
发表于 2016-11-25 12:50:37 | 显示全部楼层 |阅读模式
1金钱
DMA-串口传输下面是DMA初始化:

DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&USART1->DR ;       //串口数据寄存器
DMA_InitStructure.DMA_MemoryBaseAddr =  (u32)SendBuff ;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                          //数据传输方向内存到外设
DMA_InitStructure.DMA_BufferSize = 120;                                            //DMA 通道的 DMA 缓存的大小
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;            //外设地址不变
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;               //内存地址寄存器递增
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //数据宽度为 8 位
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;    //数据宽度为 8 位
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;                              //工作在正常缓存模式
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;                          //DM 通道拥有中优先级
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                               //非内存到内存传输
DMA_Init(DMA1_Channel4 , &DMA_InitStructure);                                 //初始化 DMA 的通道


当串口发送DMA请求:
USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);


DMA是传输完120个8位数据后停止传输,在这个过程是怎么保证每个数据都被串口发送出去了?
大神帮忙看看!迷惑很久了!!

最佳答案

查看完整内容[请看2#楼]

DMA和串口自动处理的,每当串口有一个数据发送完成时,会请求dma传输下一个数据过来,依次循环
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165560
金钱
165560
注册时间
2010-12-1
在线时间
2118 小时
发表于 2016-11-25 12:50:38 | 显示全部楼层
DMA和串口自动处理的,每当串口有一个数据发送完成时,会请求dma传输下一个数据过来,依次循环
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-11-25
在线时间
0 小时
 楼主| 发表于 2016-11-25 13:03:15 | 显示全部楼层
本帖最后由 单键丶 于 2016-11-25 13:05 编辑

来看看来看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-29 02:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表