36 lines
679 B
C
36 lines
679 B
C
#include "MyADC.h"
|
|
#include "MyTimer.h"
|
|
#include "Driver_GPIO.h"
|
|
#define NULL 0
|
|
//#define nombreChannel 1
|
|
|
|
void initADC(int channel){
|
|
|
|
// activer la clock de l'ADC 1
|
|
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
|
|
RCC->CFGR |= 0x8000;
|
|
ADC1->CR2 |= ADC_CR2_ADON;
|
|
|
|
// Choix du channel
|
|
ADC1->SQR3 |= channel << 0;// on est sur le premier car on a qu'un seul channel
|
|
}
|
|
|
|
void startADC(void) {
|
|
ADC1->CR2 |= ADC_CR2_ADON;
|
|
}
|
|
|
|
int read(void) {
|
|
int value ;
|
|
// Recuperer le bit de End of conversion
|
|
while (!(ADC1->SR & (0x01 << 1)));
|
|
//on veut masquer les 12 bits les plus bas donc on prend le not de 0x0f >> 12 (111000000000)
|
|
value = ADC1->DR & (~(0x0f << 12));
|
|
return value;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|