1.void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx)
功能:将DMAyChannelx寄存器的初始化为其默认值
注释:RCC_ResetCmd中对DMA无定义,因此采用的直接操纵DMA寄存器的方式
例如:DMA_DeInit(DMA1_Channel1);
2.void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct)
功能:根据DMA_InitStruct中的指定参数初始化DMAy通道x
注释:结构体成员DMA_BufferSize的值大小等于数据需要传输的次数
例如:DMA_Init(DMA1_Channel1 , &DMA_InitStructure);
3.void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct)
功能:用其默认值填充结构体DMA_InitStruct的每个成员
注释:只填充不写入,没有Init一步,没有写入寄存器的操作
例如:DMA_StructInit(&DMA_InitStructure);
4.void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState)
功能:使能或者失能DMA外设
例如:DMA_Cmd(DMA1_Channel1 , ENABLE);
5.void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState)
功能:配置指定的DMAy通道x的中断
注释:DMA_IT_TC:传输完成 DMA_IT_HT:传输一半 DMA_IT_TE:传输错误
例如:DMA_ITConfig(DMA1_Channel1 , DMA_IT_TC , ENABLE);
6.void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber)
功能:设置当前DMAy Channelx传输中的数据单元数
注释:数据传输数量为0至65535,寄存器内容在每次DMA传输后递减
DMA通道x传输数量寄存器(DMA_CNDTRx)只能在通道关闭即失能不工作时写入
通道开启后该寄存器变为只读,指示剩余的待传输字节数目
例如:DMA_SetCurrDataCounter(DMA1_Channel1 , 65535);
7.uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx)
功能:获取当前DMAy通道x传输中剩余数据单元的数量
注释: DMA通道x传输数量寄存器(DMA_CNDTRx)开启后该寄存器变为只读,指示剩余的待传输字节数目
寄存器内容在每次DMA传输后递减
例如:counter = DMA_GetCurrDataCounter(DMA1_Channel1);
8.FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG)
功能:检查指定的DMAy Channelx标志是否设置,检查数据传输状态
注释:参数DMA_FLAG_GLx意为:在通道x是否产生了TE、HT或TC事件
该函数与DMA_GetITStatus完全一致
例如:
if(DMA_GetFlagStatus(DMA1_FLAG_TC1) == SET)
{
}
else
{
}
9.void DMA_ClearFlag(uint32_t DMAy_FLAG)
功能:清除DMAy通道的挂起标志
注释:该函数与DMA_ClearITPendingBit完全一致
例如:DMA_ClearFlag(DMA1_FLAG_GL1);
10.ITStatus DMA_GetITStatus(uint32_t DMAy_IT)
功能:检查指定的DMAy Channelx中断是否已经发生
注释:该函数与DMA_GetFlagStatus完全一致
例如:
if(DMA_GetITStatus(DMA1_FLAG_TC1) == SET)
{
}
else
{
}
11.void DMA_ClearITPendingBit(uint32_t DMAy_IT)
功能:清除DMAy通道的中断挂起位
注释:该函数与DMA_ClearFlag完全一致
例如:DMA_ClearITPendingBit(DMA1_IT_GL1);