新手入门
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2015-4-3
- 在线时间
- 0 小时
|
5金钱
程序已加入#include "dma.h"及相关内置,为什么还不对
void ADC1_DMA_Config(void)
{
ADC_InitTypeDef ADC_InitStructure; //??ADC???
DMA_InitTypeDef DMA_InitStructure;//??DMA???
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //??DMA1??
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE ); //??ADC1?GPIOA????
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //??ADC????6 72M/6=12,ADC????????14M
//PA2——PA6 ??5?????????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //????
GPIO_Init(GPIOA, &GPIO_InitStructure);
//DMA1???1??
DMA_DeInit(DMA1_Channel1); //?DMA???1?????????
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; //?????????
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADCConvertedValue; //?????????
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //ADC?DMA??(?????)
DMA_InitStructure.DMA_BufferSize =5; //DMA???DMA?????
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //?????????
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //?????????
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord ; //???????16?
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //???????16?
DMA_InitStructure.DMA_Mode =DMA_Mode_Circular; //?????????
DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMA??1??????
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //DMA??1????????????
DMA_Init(DMA1_Channel1, &DMA_InitStructure);
DMA_ITConfig(DMA1_Channel1,DMA_IT_TC,ENABLE);//??DMA1??1??????
DMA_Cmd(DMA1_Channel1,ENABLE);//??DMA1
ADC_DeInit(ADC1); //??ADC1,??? ADC1 ????????????
//ADC1???
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC????:ADC1?ADC2???????
ADC_InitStructure.ADC_ScanConvMode = ENABLE; //???????????
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //???????????
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //??????????????
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC?????
ADC_InitStructure.ADC_NbrOfChannel = 5; //?????????ADC?????
ADC_Init(ADC1, &ADC_InitStructure); //??ADC_InitStruct???????????ADCx????
//????????????????
ADC_RegularChannelConfig(ADC1,ADC_Channel_2, 1, ADC_SampleTime_239Cycles5 ); //ADC1??2?????1,?????239.5??
ADC_RegularChannelConfig(ADC1,ADC_Channel_3, 2, ADC_SampleTime_239Cycles5 ); //ADC1??3?????2,?????239.5??
ADC_RegularChannelConfig(ADC1,ADC_Channel_4, 3, ADC_SampleTime_239Cycles5 ); //ADC1??4?????3,?????239.5??
ADC_RegularChannelConfig(ADC1,ADC_Channel_5, 4, ADC_SampleTime_239Cycles5 ); //ADC1??5?????4,?????239.5??
ADC_RegularChannelConfig(ADC1,ADC_Channel_6, 5, ADC_SampleTime_239Cycles5 ); //ADC1??6?????5,?????239.5??
ADC_DMACmd(ADC1,ENABLE);//??ADC1?DMA????
ADC_Cmd(ADC1, ENABLE); //?????ADC1
ADC_ResetCalibration(ADC1); //??ADC1??????
while(ADC_GetResetCalibrationStatus(ADC1)); //??ADC1??????????
ADC_StartCalibration(ADC1); //????ADC1
while(ADC_GetCalibrationStatus(ADC1)); //??????
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //?????ADC1?????????
}
|
|