数据选择器
步骤:
1.RCC开启DMA的时钟
2.直接调用DMA_Init初始化各个参数(外设和存储器站点的起始地址,数据宽度,地址是否自增,方向,传输计数器,是否需要自动重装,选择触发源,通道优先级)
3.进行开关控制(DMA_Cmd);外设触发要在对应的外设调用XXX_DMACmd,开启一下触发信号的输出。如果需要DMA的中断,那就调用DMA_ITConfig,开启中断输出,再在NVIC里配置相应的通道,写下中断函数。
函数:
void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber); //给传输计数器写数据
uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx);//返回计数器的值
FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG);//获取标志位状态
void DMA_ClearFlag(uint32_t DMAy_FLAG);//清除标志位
ITStatus DMA_GetITStatus(uint32_t DMAy_IT);//获取中断标志位状态
void DMA_ClearITPendingBit(uint32_t DMAy_IT);//清除中断标志位状态
DMA转运条件:
1.传输计数器>0;
2.触发源有触发信号;
3.DMA使能;