Advertisement
Guest User

Untitled

a guest
Jun 7th, 2017
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stm32f30x.h>
  2.  
  3. /*
  4. * Use of the DAC - Digital to Analog Converter.
  5. * Takes a sample at each TIM6 overflow event, resets at 100 samples which will be stored in an array.
  6. * We are taking a sample of a sinusoid, its period is 2pi. We want 100 samples so we have 2pi/100 = 0.0628 ~ 0.063
  7. * Everytime the button user is pressed, we are incrementing of 10^cont , cont can't be > 2.
  8. */
  9.  
  10. void setupTIM6(void);
  11. void setupDAC(void);
  12. void setupButton(void);
  13.  
  14. int cont = 0;
  15. int a = 0;
  16. int prescaler = 0;
  17. int campioni[100];
  18. int risultati[100];
  19.  
  20.  
  21. int main(void)
  22. {
  23.   setupButton();
  24.   setupDAC();
  25.   setupTIM6();
  26.   TIM6->CR1 |= TIM_CR1_CEN;
  27.   while(1);
  28.   return 1;
  29.  
  30. }
  31.  
  32. void setupTIM6(void)
  33. {
  34.   RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; //Timer 6 clock enable
  35.   NVIC->ISER[1] |= (1 << 22); //Enabling interrupts TIM6 global and DAC12 underrun interrupts
  36.  
  37.   TIM6->CR1 = 0; //Resetting CR1
  38.   TIM6->CR2 = 0; //Resetting CR2
  39.   TIM6->PSC = 3599; //Prescaler to 3600 (3599+1)
  40.   TIM6->CNT = 10000;
  41.   TIM6->DIER |= TIM_DIER_UIE; //Update interrupt enable
  42. }
  43.  
  44. void setupButton(void)
  45. {
  46.   RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //Enabling GPIOA for button
  47.   NVIC->ISER[0] |= (1 << 6); //Enabling EXTI0
  48.   SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI0_PA; //PA0 pin
  49.   EXTI->IMR |= EXTI_IMR_MR0;
  50.   EXTI->EMR |= EXTI_EMR_MR0;
  51.   EXTI->FTSR |= EXTI_FTSR_TR0;
  52. }
  53.  
  54. void setupDAC()
  55. {
  56.   RCC->APB1ENR |= RCC_APB1ENR_DACEN; //Turning on the clock of the DAC activating the peripheral
  57.   RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //Enabling port A
  58.   GPIOA->MODER |= GPIO_MODER_MODER4 | GPIO_MODER_MODER5; //PA4 and PA5 to analog mode
  59.   DAC->CR |= DAC_CR_EN1; //Enabling the DAC channel 1.
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement