Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stm32f3xx.h"
- #define MASK(x) (1<<x)
- #define DOUT GPIOD->ODR
- uint16_t adc_data;
- void ADC_Init (void);
- float v_ref = 3.3f;
- float voltaje = 0.0f;
- int main (void){
- ADC_Init();
- RCC->AHBENR |= RCC_AHBENR_GPIODEN;
- GPIOD->MODER |= MASK(16) +MASK(18) +MASK(20) +MASK(22) +MASK(24) +MASK(26) +MASK(28) +MASK(30);
- DOUT |=(1<<8);
- DOUT |=(1<<9);
- DOUT |=(1<<10);
- DOUT |=(1<<11);
- DOUT |=(1<<12);
- DOUT |=(1<<13);
- DOUT |=(1<<14);
- DOUT |=(1<<15);
- while(1){
- voltaje = (adc_data*v_ref)/1023.0f;
- if (voltaje > (v_ref*0.8888f)){
- DOUT |=(1<<8);
- DOUT |=(1<<9);
- DOUT |=(1<<10);
- DOUT |=(1<<11);
- DOUT |=(1<<12);
- DOUT |=(1<<13);
- DOUT |=(1<<14);
- DOUT |=(1<<15);}
- else if (voltaje > (v_ref*0.7777f)){
- DOUT |=(1<<8);
- DOUT |=(1<<9);
- DOUT |=(1<<10);
- DOUT |=(1<<11);
- DOUT |=(1<<12);
- DOUT |=(1<<13);
- DOUT |=(1<<14);
- DOUT &= ~(1<<15);}
- else if (voltaje > (v_ref*0.6666f)){
- DOUT |=(1<<8);
- DOUT |=(1<<9);
- DOUT |=(1<<10);
- DOUT |=(1<<11);
- DOUT |=(1<<12);
- DOUT |=(1<<13);
- DOUT &= ~(1<<14);
- DOUT &= ~(1<<15);}
- else if (voltaje > (v_ref*0.5555f)){
- DOUT |=(1<<8);
- DOUT |=(1<<9);
- DOUT |=(1<<10);
- DOUT |=(1<<11);
- DOUT |=(1<<12);
- DOUT &= ~(1<<13);
- DOUT &= ~(1<<14);
- DOUT &= ~(1<<15);}
- else if (voltaje > (v_ref*0.4444f)){
- DOUT |=(1<<8);
- DOUT |=(1<<9);
- DOUT |=(1<<10);
- DOUT |=(1<<11);
- DOUT &= ~(1<<12);
- DOUT &= ~(1<<13);
- DOUT &= ~(1<<14);
- DOUT &= ~(1<<15);}
- else if (voltaje > (v_ref*0.3333f)){
- DOUT |= (1<<8);
- DOUT |= (1<<9);
- DOUT |= (1<<10);
- DOUT &= ~(1<<11);
- DOUT &= ~(1<<12);
- DOUT &= ~(1<<13);
- DOUT &= ~(1<<14);
- DOUT &= ~(1<<15);}
- else if (voltaje > (v_ref*0.2222f)){
- DOUT |= (1<<8);
- DOUT |= (1<<9);
- DOUT &= ~(1<<10);
- DOUT &= ~(1<<11);
- DOUT &= ~(1<<12);
- DOUT &= ~(1<<13);
- DOUT &= ~(1<<14);
- DOUT &= ~(1<<15);}
- else if (voltaje > (v_ref*0.1111f)){
- DOUT |= (1<<8);
- DOUT &= ~(1<<9);
- DOUT &= ~(1<<10);
- DOUT &= ~(1<<11);
- DOUT &= ~(1<<12);
- DOUT &= ~(1<<13);
- DOUT &= ~(1<<14);
- DOUT &= ~(1<<15);
- }else{
- DOUT &= ~(1<<8);
- DOUT &= ~(1<<9);
- DOUT &= ~(1<<10);
- DOUT &= ~(1<<11);
- DOUT &= ~(1<<12);
- DOUT &= ~(1<<13);
- DOUT &= ~(1<<14);
- DOUT &= ~(1<<15);
- }
- }
- }
- void ADC_Init(void){
- RCC->AHBENR |= RCC_AHBENR_ADC12EN + RCC_AHBENR_GPIOAEN;
- GPIOA->MODER |= (3<<8);
- ADC2->CFGR |= ADC_CFGR_CONT + ADC_CFGR_RES_0;
- ADC2->SQR1 |= (1<<6);
- ADC1_2_COMMON->CCR |= (3<<16);
- ADC2->CR |= ADC_CR_ADEN + ADC_CR_ADSTART;
- ADC2->IER |= ADC_IER_EOCIE;
- NVIC_EnableIRQ(ADC1_2_IRQn);
- }
- uint32_t n;
- void ADC1_2_IRQHandler(void){
- adc_data = ADC2->DR;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement