Advertisement
ioannk

adc - dma - timer init

Jun 5th, 2021
859
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.13 KB | None | 0 0
  1.     ADC1->CR2 |= ADC_CR2_EXTSEL; // SWSTART
  2.     ADC1->CR2 |= ADC_CR2_EXTTRIG;
  3.     ADC1->SMPR2 |= ADC_SAMPLETIME_239CYCLES_5;
  4.     ADC1->CR2 |= ADC_CR2_ADON;
  5.     ADC1->CR2 |= ADC_CR2_DMA;
  6.    
  7.     HAL_Delay(2);
  8.     ADC1->CR2 |= ADC_CR2_CAL;
  9.     HAL_Delay(2);
  10.    
  11.     HAL_NVIC_DisableIRQ(DMA1_Channel1_IRQn);
  12.     DMA1_Channel1->CCR |= DMA_CCR_TCIE;
  13.     DMA1_Channel1->CCR |= DMA_CCR_MSIZE_0;
  14.     DMA1_Channel1->CCR |= DMA_CCR_PSIZE_0;
  15.     DMA1_Channel1->CCR |= DMA_CCR_CIRC;
  16.     DMA1_Channel1->CNDTR = 10;
  17.     DMA1_Channel1->CPAR = (uint32_t)&(ADC1->DR);
  18.     DMA1_Channel1->CMAR = (uint32_t)&(TIM2->CCR1);
  19.    
  20.     DMA1_Channel1->CCR |= DMA_CCR_EN;
  21.     ADC1->CR2 |= ADC_CR2_SWSTART;
  22.  
  23.     TIM2->CCMR2 |= TIM_CCMR1_OC1CE; // OC1PE: Output compare 1 preload enable
  24.     TIM2->CCMR2 |= (TIM_CCMR1_OC1M_2 | TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_0); // PWM mode 2 - In upcounting, channel 1 is inactive
  25.     TIM2->CCER  |= TIM_CCER_CC1E; // Capture/Compare 1 output to pin enable
  26.     //TIM2->PSC    = 0xFFFF; // Prescaler value
  27.     TIM2->ARR    = 0xFFF; // ARR is the value to be loaded in the actual auto-reload register.
  28.     //TIM2->CCR4   = 0x40; // Capture/Compare 1 value
  29.     TIM2->CR1   |= TIM_CR1_CEN; // Counter enable
  30.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement