|
|
/******************** ADC 配置 ********************/
void ADC_config(void)
{
ADC_InitTypeDef ADC_InitStructure; //结构定义
ADC_InitStructure.ADC_SMPduty = 31; //ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
ADC_InitStructure.ADC_CsSetup = 0; //ADC 通道选择时间控制 0(默认),1
ADC_InitStructure.ADC_CsHold = 1; //ADC 通道选择保持时间控制 0,1(默认),2,3
ADC_InitStructure.ADC_Speed = ADC_SPEED_2X16T; //设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
ADC_InitStructure.ADC_AdjResult = ADC_RIGHT_JUSTIFIED; //ADC结果调整, ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
ADC_Inilize(&ADC_InitStructure); //初始化
ADC_PowerControl(ENABLE); //ADC电源开关, ENABLE或DISABLE
NVIC_ADC_Init(DISABLE,Priority_0); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
}
/******************** DMA 配置 ********************/
void DMA_config(void)
{
DMA_ADC_InitTypeDef DMA_ADC_InitStructure; //结构定义
DMA_ADC_InitStructure.DMA_Enable = ENABLE; //DMA使能 ENABLE,DISABLE
DMA_ADC_InitStructure.DMA_Channel = 0xffff; //ADC通道使能寄存器, 1:使能, bit15~bit0 对应 ADC15~ADC0
DMA_ADC_InitStructure.DMA_Buffer = (u16)DmaAdBuffer; //ADC转换数据存储地址
DMA_ADC_InitStructure.DMA_Times = ADC_4_Times; //每个通道转换次数, ADC_1_Times,ADC_2_Times,ADC_4_Times,ADC_8_Times,ADC_16_Times,ADC_32_Times,ADC_64_Times,ADC_128_Times,ADC_256_Times
DMA_ADC_Inilize(&DMA_ADC_InitStructure); //初始化
NVIC_DMA_ADC_Init(ENABLE,Priority_0,Priority_0); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0~Priority_3; 总线优先级(低到高) Priority_0~Priority_3
DMA_ADC_TRIG(); //触发启动转换
}
在使用ADC+DMA时 DMA搬运数据只能像上面的格式一样吗? 我想是不是能够让DMA每次只搬运ADC转换的数据 然后存入数组中让其自增 这样我就可以让搬运次数和数组大小匹配
|
|