u16 AD_Value[12]; //比如将ADC配置成12通道的,顺序连续转换模式
//开启DMA,并使用它的连续传输模式,
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&ADC1->DR; //DMA外设ADC基地址
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&AD_Value; //DMA内存基地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //内存作为数据传输的目的地
DMA_InitStructure.DMA_BufferSize = 12; //DMA通道的DMA缓存的大小
第一、请问,ADC是转换完成一次,DR数据更新一次,就启动一次DMA传输,将AD_Value的某个单元更新?还是DMA要等待DR更新12次,然后一次性的传输给AD_Value。
第二、我很是担心,拿AD_Value中的数据去做数据计算时,会不会出现DMA刚好也正向AD_Value中写数据,这样跟多任务一样,对共享资源的访问,没有保证互斥访问,不会出问题吗?
转载
|