OpenEdv-开源电子网

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

stm32F1x,DMA实验中DMA_DeInit(DMA_CHx)存在的作用

[复制链接]

27

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
384
金钱
384
注册时间
2018-11-20
在线时间
62 小时
发表于 2018-12-1 16:51:44 | 显示全部楼层 |阅读模式
1金钱
#include "dma.h"
DMA_InitTypeDef DMA_InitStructure;
u16 DMA1_MEM_LEN;//保存 DMA 每次数据传送的长度
//DMA1 的各通道配置
//这里的传输形式是固定的,这点要根据不同的情况来修改
//从存储器->外设模式/8 位数据宽度/存储器增量模式
//DMA_CHxMA 通道 CHx
//cpar:外设地址
//cmar:存储器地址
//cndtr:数据传输量
void MYDMA_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //使能 DMA 时钟
DMA_DeInit(DMA_CHx); //将 DMA 的通道 1 寄存器重设为缺省值
DMA1_MEM_LEN=cndtr;
DMA_InitStructure.DMA_PeripheralBaseAddr = cpar; //DMA 外设 ADC 基地址
DMA_InitStructure.DMA_MemoryBaseAddr = cmar; //DMA 内存基地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; //数据传输方向内存到外设
DMA_InitStructure.DMA_BufferSize = cndtr; //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(DMA_CHx, &DMA_InitStructure); //初始化 DMA 的通道
}
问:为什么在使能DMA时钟后将DMA通道1所有寄存器设置为缺省值?

最佳答案

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

个人觉得,这是因为库函数中,怕程序员在其它地方把DMA的某些寄存器修改了也不知道,因此在使用前,先复位到初始状态,再进行配置,如果你能确保你自己的配置是正确的, DAM_DeInit()这个函数应该不是必须的,你可以试着屏蔽,看功能是否依然正常。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2018-11-5
在线时间
15 小时
发表于 2018-12-1 16:51:45 | 显示全部楼层
个人觉得,这是因为库函数中,怕程序员在其它地方把DMA的某些寄存器修改了也不知道,因此在使用前,先复位到初始状态,再进行配置,如果你能确保你自己的配置是正确的,
DAM_DeInit()这个函数应该不是必须的,你可以试着屏蔽,看功能是否依然正常。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 08:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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