打印
[应用相关]

DMA控制器介绍

[复制链接]
996|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
litengg|  楼主 | 2016-10-25 19:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DMA寄存器结构,DMA_Channel_TypeDef和DMA_TypeDef在文件“stm32f10x_map.h”定义如下:
typedef struct
{
  vu32CCR;
  vu32CNDTR;
  vu32CPAR;
  vu32CMAR;
}DMA_Channel_TypeDef;
typedef struct
{
  vu32ISR;
  vu32IFCR;
} DMA_TypeDef;
DMA寄存器介绍:
ISR: DMA中断状态寄存器
IFCR: DMA中断标志位清除寄存器
CCRx: DMA通道x设置寄存器
CNDTRx:DMA通道x待传输数据数目寄存器
CPARx: DMA通道x外设地址寄存器
CMARx: DMA通道x内存地址寄存器
2.DMA库函数

2.1 函数DMA_DeInit
函数原形 :voidDMA_DeInit(DMA_Channel_TypeDef* DMA_Channelx)
函数功能:将DMA的通道x寄存器重设为缺省值
函数参数:DMA_Channelx中x取值为1-7来选择通道
2.2 函数DMA_Init
函数原形 :voidDMA_Init(DMA_Channel_TypeDef* DMA_Channelx, DMA_InitTypeDef*DMA_InitStruct)
函数功能:根据DMA_InitStruct中指定的参数初始化DMA的通道x寄存器

2.3 函数DMA_Cmd
函数原形 :voidDMA_Cmd(DMA_Channel_TypeDef* DMA_Channelx, FunctionalStateNewState)
函数功能 :使能或者失能指定的通道x
参数描述 :DMAChannelx:x可以是1,2…,或者7来选择DMA通道x
          NewState:DMA通道x的新状态。这个参数可以取:ENABLE或者DISABLE
2.4 函数DMA_ITConfig
函数原形 :voidDMA_ITConfig(DMA_Channel_TypeDef* DMA_Channelx, u32 DMA_IT,
                            FunctionalState NewState)
函数功能 :使能或者失能指定的通道x中断
函数参数 :DMAChannelx:x可以是1,2…,或者7来选择DMA通道x
           DMA_IT:待使能或者失能的DMA中断源,使用操作符“|”可以同时选中多个DMA中断源
2.5 函数DMA_GetCurrDataCounte
函数原形 :u16DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMA_Channelx)
函数功能:返回当前DMA通道x剩余的待传输数据数目
函数参数 :DMAChannelx:x可以是1,2…,或者7来选择DMA通道x
函数返回:当前DMA通道x剩余的待传输数据数目
2.6 函数DMA_GetFlagStatus
函数原形 :FlagStatusDMA_GetFlagStatus(u32 DMA_FLAG)
函数功能:检查指定的DMA通道x标志位设置与否
函数参数:DMA_FLAG:待检查的DMA标志位
函数返回:DMA_FLAG的新状态(SET或者RESET)
2.7 函数DMA_ClearFlag
函数原形 :voidDMA_ClearFlag(u32 DMA_FLAG)
函数功能 :清除DMA通道x待处理标志位
函数参数:DMA_FLAG:待清除的DMA标志位,使用操作符“|”可以同时选中多个DMA标志位
2.8 函数DMA_GetITStatus
函数原形 :ITStatusDMA_GetITStatus(u32 DMA_IT)
函数功能:检查指定的DMA通道x中断发生与否
函数参数:DMA_IT:待检查的DMA中断源
函数返回:DMA_IT的新状态(SET或者RESET)
2.9 函数DMA_ClearITPendingBit
函数原形 :voidDMA_ClearITPendingBit(u32 DMA_IT)
函数功能 :清除DMA通道x中断待处理标志位
函数参数:DMA_IT:待清除的DMA中断待处理标志位
沙发
qiangweii| | 2016-10-25 19:09 | 只看该作者
DMA_PeripheralBaseAddr  该参数用以定义DMA外设基地址

使用特权

评论回复
板凳
shashaa| | 2016-10-25 19:13 | 只看该作者
我知道 DMA_MemoryBaseAddr   该参数用以定义DMA内存基地址的。

使用特权

评论回复
地板
wanglaojii| | 2016-10-25 19:16 | 只看该作者
DMA_DIR  DMA_DIR规定了外设是作为数据传输的目的地还是来源。

使用特权

评论回复
5
laozhongyi| | 2016-10-25 19:35 | 只看该作者
DMA_BufferSize  用以定义指定DMA通道的DMA缓存的大小,单位为数据单位。

使用特权

评论回复
6
Edisons| | 2016-10-25 19:37 | 只看该作者
DMA_PeripheralInc  是用来设定外设地址寄存器递增与否.

使用特权

评论回复
7
_gege| | 2016-10-25 19:43 | 只看该作者
还有DMA_MemoryInc、DMA_PeripheralDataSize 、 DMA_MemoryDataSize 等配置。

使用特权

评论回复
8
Mozarts| | 2016-10-25 19:46 | 只看该作者
DMA_Mode   设置了工作模式
DMA_Priority   设定DMA通道x的软件优先级

使用特权

评论回复
9
迪卡| | 2016-10-25 20:41 | 只看该作者
感谢楼主,学习了

使用特权

评论回复
10
heisexingqisi| | 2016-10-25 22:48 | 只看该作者
DMA必须的深入学习,想玩高级的,必须会这个。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

1597

帖子

4

粉丝