//开启一次DMA传输
//单次DMA转换之后,必须把DMA关闭,再次启动,才能实现第二次DMA传输!!!
void MYDMA_GOnes(DMA_Channel_TypeDef*DMA_CHx)
{
DMA_CHx->CCR&=~(1<<0); //关闭DMA传输
DMA_CHx->CNDTR=DMA1_MEM_LEN; //DMA1,传输数据量
DMA_CHx->CCR|=1<<0; //开启DMA传输
}
这里我定义了
u16 ADC_Buf[16];
#define DMA1_MEM_LEN 16
整个功能是为了测试两路adc用dma传输,ch2是角度传感器的adc值,ch16是内部温度传感器
问:我采集的是通道2和通道16的adc值,在从ADC1_DR到ADC_Buf的过程中,是采集一次CH2,再采集一次CH16(按照我预先设定的顺序依次存放),直到采集16次为止么?还是说跟我设置的adc1的工作模式有关?
还有就是我用CH2和CH16,那SQR怎么设置?
ADC1->SQR1&=~(0XF<<20);
ADC1->SQR1&=1<<20; //2个转换在规则序列中
ADC1->SQR3&=0XFFFFFC00;
ADC1->SQR3|=2<<0;
ADC1->SQR3|=16<<5;
ADC1->CR2|=1<<22; //启动规则转换通道
我是这么设置,但总觉得有问题。。求解,谢谢
|