Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. #include "stm32f3xx.h"
  2.  
  3. #define MASK(x) (1<<x)
  4. #define DOUT GPIOD->ODR
  5.  
  6. uint16_t adc_data;
  7. void ADC_Init (void);
  8.  
  9. float v_ref = 3.3f;
  10. float voltaje = 0.0f;
  11.  
  12. int main (void){
  13.  
  14. ADC_Init();
  15. RCC->AHBENR |= RCC_AHBENR_GPIODEN;
  16. GPIOD->MODER |= MASK(16) +MASK(18) +MASK(20) +MASK(22) +MASK(24) +MASK(26) +MASK(28) +MASK(30);
  17.  
  18. DOUT |=(1<<8);
  19. DOUT |=(1<<9);
  20. DOUT |=(1<<10);
  21. DOUT |=(1<<11);
  22. DOUT |=(1<<12);
  23. DOUT |=(1<<13);
  24. DOUT |=(1<<14);
  25. DOUT |=(1<<15);
  26. while(1){
  27. voltaje = (adc_data*v_ref)/1023.0f;
  28. if (voltaje > (v_ref*0.8888f)){
  29. DOUT |=(1<<8);
  30. DOUT |=(1<<9);
  31. DOUT |=(1<<10);
  32. DOUT |=(1<<11);
  33. DOUT |=(1<<12);
  34. DOUT |=(1<<13);
  35. DOUT |=(1<<14);
  36. DOUT |=(1<<15);}
  37. else if (voltaje > (v_ref*0.7777f)){
  38. DOUT |=(1<<8);
  39. DOUT |=(1<<9);
  40. DOUT |=(1<<10);
  41. DOUT |=(1<<11);
  42. DOUT |=(1<<12);
  43. DOUT |=(1<<13);
  44. DOUT |=(1<<14);
  45. DOUT &= ~(1<<15);}
  46. else if (voltaje > (v_ref*0.6666f)){
  47. DOUT |=(1<<8);
  48. DOUT |=(1<<9);
  49. DOUT |=(1<<10);
  50. DOUT |=(1<<11);
  51. DOUT |=(1<<12);
  52. DOUT |=(1<<13);
  53. DOUT &= ~(1<<14);
  54. DOUT &= ~(1<<15);}
  55. else if (voltaje > (v_ref*0.5555f)){
  56. DOUT |=(1<<8);
  57. DOUT |=(1<<9);
  58. DOUT |=(1<<10);
  59. DOUT |=(1<<11);
  60. DOUT |=(1<<12);
  61. DOUT &= ~(1<<13);
  62. DOUT &= ~(1<<14);
  63. DOUT &= ~(1<<15);}
  64. else if (voltaje > (v_ref*0.4444f)){
  65. DOUT |=(1<<8);
  66. DOUT |=(1<<9);
  67. DOUT |=(1<<10);
  68. DOUT |=(1<<11);
  69. DOUT &= ~(1<<12);
  70. DOUT &= ~(1<<13);
  71. DOUT &= ~(1<<14);
  72. DOUT &= ~(1<<15);}
  73. else if (voltaje > (v_ref*0.3333f)){
  74. DOUT |= (1<<8);
  75. DOUT |= (1<<9);
  76. DOUT |= (1<<10);
  77. DOUT &= ~(1<<11);
  78. DOUT &= ~(1<<12);
  79. DOUT &= ~(1<<13);
  80. DOUT &= ~(1<<14);
  81. DOUT &= ~(1<<15);}
  82. else if (voltaje > (v_ref*0.2222f)){
  83. DOUT |= (1<<8);
  84. DOUT |= (1<<9);
  85. DOUT &= ~(1<<10);
  86. DOUT &= ~(1<<11);
  87. DOUT &= ~(1<<12);
  88. DOUT &= ~(1<<13);
  89. DOUT &= ~(1<<14);
  90. DOUT &= ~(1<<15);}
  91. else if (voltaje > (v_ref*0.1111f)){
  92. DOUT |= (1<<8);
  93. DOUT &= ~(1<<9);
  94. DOUT &= ~(1<<10);
  95. DOUT &= ~(1<<11);
  96. DOUT &= ~(1<<12);
  97. DOUT &= ~(1<<13);
  98. DOUT &= ~(1<<14);
  99. DOUT &= ~(1<<15);
  100. }else{
  101. DOUT &= ~(1<<8);
  102. DOUT &= ~(1<<9);
  103. DOUT &= ~(1<<10);
  104. DOUT &= ~(1<<11);
  105. DOUT &= ~(1<<12);
  106. DOUT &= ~(1<<13);
  107. DOUT &= ~(1<<14);
  108. DOUT &= ~(1<<15);
  109. }
  110. }
  111. }
  112.  
  113.  
  114. void ADC_Init(void){
  115. RCC->AHBENR |= RCC_AHBENR_ADC12EN + RCC_AHBENR_GPIOAEN;
  116.  
  117. GPIOA->MODER |= (3<<8);
  118.  
  119. ADC2->CFGR |= ADC_CFGR_CONT + ADC_CFGR_RES_0;
  120.  
  121. ADC2->SQR1 |= (1<<6);
  122.  
  123. ADC1_2_COMMON->CCR |= (3<<16);
  124.  
  125. ADC2->CR |= ADC_CR_ADEN + ADC_CR_ADSTART;
  126. ADC2->IER |= ADC_IER_EOCIE;
  127.  
  128. NVIC_EnableIRQ(ADC1_2_IRQn);
  129. }
  130.  
  131. uint32_t n;
  132. void ADC1_2_IRQHandler(void){
  133. adc_data = ADC2->DR;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement