Guest User

Untitled

a guest
Feb 3rd, 2015
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.86 KB | None | 0 0
  1. void DMA_Config(void) {
  2.     DMA_InitTypeDef DMA_InitStructure;
  3.     DMA_DeInit(DMA1_Channel1);
  4.     DMA_InitStructure.DMA_PeripheralBaseAddr = (unsigned long int)ADC1_DR_Address;  //Adres docelowy transferu
  5.     DMA_InitStructure.DMA_MemoryBaseAddr = (unsigned long int)&buforADC;            //Adres poczatku bloku do przeslania
  6.     DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;                              //Kierunek transferu
  7.     DMA_InitStructure.DMA_BufferSize = 8;                                           //Liczba elementow do przeslania (dlugosc bufora)
  8.     DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                //Wylaczenie automatycznego zwiekszania adresu po stronie ADC
  9.     DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                         //Wlaczenie automatycznego zwiekszania adresu po stronie pamieci (bufora)
  10.     DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;     //Rozmiar pojedynczych przesylanych danych po stronie ADC (HalfWord = 16bit)
  11.     DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;             //Rozmiar pojedynczych przesylanych danych po stronie pamieci (bufora)
  12.     DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                 //Tryb dzialania kontrolera DMA - powtarzanie cykliczne
  13.     DMA_InitStructure.DMA_Priority = DMA_Priority_High;                             //Priorytet DMA - wysoki
  14.     DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                                    //Wylaczenie obslugi transferu z pamieci do pamieci
  15.     DMA_Init(DMA1_Channel1, &DMA_InitStructure);                                    //Zapis konfiguracji
  16.     DMA_Cmd(DMA1_Channel1, ENABLE);
  17. }
  18.  
  19. void ADC_Config(void) {
  20.     ADC_InitTypeDef ADC_InitStructure;
  21.     ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
  22.     ADC_InitStructure.ADC_ScanConvMode = ENABLE;
  23.     ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
  24.     ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
  25.     ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  26.     ADC_InitStructure.ADC_NbrOfChannel = 8;
  27.     ADC_Init(ADC1, &ADC_InitStructure);
  28.  
  29.     ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 8, ADC_SampleTime_7Cycles5);
  30.     ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 7, ADC_SampleTime_7Cycles5);
  31.     ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 6, ADC_SampleTime_7Cycles5);
  32.     ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 5, ADC_SampleTime_7Cycles5);
  33.     ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 4, ADC_SampleTime_7Cycles5);
  34.     ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 3, ADC_SampleTime_7Cycles5);
  35.     ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 2, ADC_SampleTime_7Cycles5);
  36.     ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 1, ADC_SampleTime_7Cycles5);
  37.  
  38.     ADC_DMACmd(ADC1,ENABLE);
  39.     ADC_Cmd(ADC1, ENABLE);
  40.     ADC_ResetCalibration(ADC1);
  41.     while(ADC_GetResetCalibrationStatus(ADC1));
  42.     ADC_StartCalibration(ADC1);
  43.     while(ADC_GetCalibrationStatus(ADC1));
  44. }
Advertisement
Add Comment
Please, Sign In to add comment