OpenEdv-开源电子网

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

问问DMA的问题

[复制链接]

12

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2012-12-14
在线时间
2 小时
发表于 2013-5-11 11:15:05 | 显示全部楼层 |阅读模式
void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{
  RCC->AHBENR|=1<<0; //开启DMA1时钟
  delay_ms(1); //等待DMA时钟稳定
  DMA_CHx->CPAR=cpar;   //DMA1 外设地址 
DMA_CHx->CMAR=(u32)cmar;//DMA1,存储器地址
DMA1_MEM_LEN=cndtr;     //保存DMA传输数据量
DMA_CHx->CNDTR=cndtr;   //DMA1,传输数据量
DMA_CHx->CCR=0X00000000;//复位
DMA_CHx->CCR|=1<<4;  //从存储器读
DMA_CHx->CCR|=0<<5;  //普通模式
DMA_CHx->CCR|=0<<6;  //外设地址非增量模式
DMA_CHx->CCR|=1<<7;  //存储器增量模式
DMA_CHx->CCR|=0<<8;  //外设数据宽度为8位
DMA_CHx->CCR|=0<<10; //存储器数据宽度8位
DMA_CHx->CCR|=1<<12; //中等优先级
DMA_CHx->CCR|=0<<14; //非存储器到存储器模式  

一直看不懂    DMA_Channel_TypeDef*DMA_CHx   在c语言里面是一种什么样的变量?
哪位大神可以知道一下

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2013-4-24
在线时间
4 小时
发表于 2013-5-11 11:23:41 | 显示全部楼层
回复【楼主位】qmpzzpmq:
---------------------------------
看你等级不应该啊,结构体指针变量啊,指向的是DMA通道寄存器地址。因为寄存器都是连续的,用结构体封装好这些寄存器而已。
牛逼死了,牛还活着吗?
回复 支持 反对

使用道具 举报

12

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2012-12-14
在线时间
2 小时
 楼主| 发表于 2013-5-11 11:34:34 | 显示全部楼层
回复【2楼】cortexM3:
---------------------------------
就是一个指向DMA_Channel_TypeDef结构体的名为DMA_CHx的指针?
回复 支持 反对

使用道具 举报

10

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2013-4-24
在线时间
4 小时
发表于 2013-5-11 11:47:17 | 显示全部楼层
回复【3楼】 qmpzzpmq :
---------------------------------
是指向具体DMA通道寄存器基地址的指针

typedef struct
{
  __IO uint32_t CCR;
  __IO uint32_t CNDTR;
  __IO uint32_t CPAR;
  __IO uint32_t CMAR;
} DMA_Channel_TypeDef;

这里面的CCR CNDTR都是DMA通道的寄存器。
然后下面的是具体通道的地址映射。

#define DMA1_Channel1       ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE)
#define DMA1_Channel2       ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE)
#define DMA1_Channel3       ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE)
#define DMA1_Channel4       ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE)
#define DMA1_Channel5       ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE)
#define DMA1_Channel6       ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE)
#define DMA1_Channel7       ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE)
#define DMA2_Channel1       ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE)
#define DMA2_Channel2       ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE)
#define DMA2_Channel3       ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE)
#define DMA2_Channel4       ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE)
#define DMA2_Channel5       ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE)



#define DMA1_BASE             (AHBPERIPH_BASE + 0x0000)
#define DMA1_Channel1_BASE    (AHBPERIPH_BASE + 0x0008)
#define DMA1_Channel2_BASE    (AHBPERIPH_BASE + 0x001C)
#define DMA1_Channel3_BASE    (AHBPERIPH_BASE + 0x0030)
#define DMA1_Channel4_BASE    (AHBPERIPH_BASE + 0x0044)
#define DMA1_Channel5_BASE    (AHBPERIPH_BASE + 0x0058)
#define DMA1_Channel6_BASE    (AHBPERIPH_BASE + 0x006C)
#define DMA1_Channel7_BASE    (AHBPERIPH_BASE + 0x0080)
#define DMA2_BASE             (AHBPERIPH_BASE + 0x0400)
#define DMA2_Channel1_BASE    (AHBPERIPH_BASE + 0x0408)
#define DMA2_Channel2_BASE    (AHBPERIPH_BASE + 0x041C)
#define DMA2_Channel3_BASE    (AHBPERIPH_BASE + 0x0430)
#define DMA2_Channel4_BASE    (AHBPERIPH_BASE + 0x0444)
#define DMA2_Channel5_BASE    (AHBPERIPH_BASE + 0x0458)


看懂了吧?


牛逼死了,牛还活着吗?
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-5-11 15:48:23 | 显示全部楼层
结构体指针 。要指向主要用->不是结构体的.    注意下这里。
一直努力就很好。
回复 支持 反对

使用道具 举报

12

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2012-12-14
在线时间
2 小时
 楼主| 发表于 2013-5-11 21:22:20 | 显示全部楼层
回复【4楼】cortexM3:
---------------------------------
看懂了,这些东西在哪找来的啊?
回复 支持 反对

使用道具 举报

12

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2012-12-14
在线时间
2 小时
 楼主| 发表于 2013-5-11 22:04:47 | 显示全部楼层
回复【4楼】cortexM3:
---------------------------------
是不是stm32f10x_dma.h里?我没找到啊
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2013-7-8 16:35:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 02:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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