Brise

STM32F401RE-nucleo CMSIS ADC 본문

MCU

STM32F401RE-nucleo CMSIS ADC

naudhizb 2017. 12. 7. 10:28
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "stm32f4xx.h"
 
__IO uint16_t verti;
__IO float v = 0.0f; 
 
int main(void) {
    RCC->AHB1ENR |= RCC_AHB1Periph_GPIOA;
    
    GPIOA->MODER |= 0x3 << 2;
    
    RCC->APB2ENR |= RCC_APB2Periph_ADC1;
    
    ADC->CCR &= ~ADC_CCR_ADCPRE;
    ADC->CCR |= (ADC_CCR_ADCPRE_1 | ADC_CCR_ADCPRE_0);
    ADC1->SQR1 &= ~ADC_SQR1_L;
    ADC1->SMPR2 &= ~ADC_SMPR2_SMP1;
    ADC1->SQR3 &= ~ADC_SQR3_SQ1;
    ADC1->SQR3 |= ADC_SQR3_SQ1_0;
    ADC1->CR2 |= ADC_CR2_ADON; // adc enable
    
    while(1) {
        ADC1->CR2 |= ADC_CR2_SWSTART;
        while((ADC1->SR&ADC_SR_EOC)==0);
        verti= ADC1->DR;
        v = (float)verti/4096.0 *3.3;
    }
}
cs


반응형
Comments