From f34021bd5f7fbaee792700fff8ba1db048b1056f Mon Sep 17 00:00:00 2001 From: Elise Le Roux Date: Fri, 15 Oct 2021 16:44:10 +0200 Subject: [PATCH] doc + ADC --- Drivers/MyADC.c | 18 ++++++++++++++++++ Drivers/MyADC.h | 27 +++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 Drivers/MyADC.c create mode 100644 Drivers/MyADC.h diff --git a/Drivers/MyADC.c b/Drivers/MyADC.c new file mode 100644 index 0000000..6530713 --- /dev/null +++ b/Drivers/MyADC.c @@ -0,0 +1,18 @@ +#include "MyADC.h" + +void MyADC_Init ( char input_channel ) { + RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; // Active l'horloge de l'ADC + RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6; // Divise par 6 la fréquence d'entrée qui doit être < 14 MHz + ADC1->CR2|= ADC_CR2_ADON; // Active l'ADC + ADC1->SQR1 &= ADC_SQR1_L; // 1 voie à convertir + ADC1->SQR3|= input_channel; // sélectionne la voie à convertir + //ADC1->CR2 |= ADC_CR2_CAL; // début de la calibration + //while (ADC1->CR2 & ADC_CR2_CAL); // attente de la fin de la calibration +} + +int convert_single(){ + ADC1->CR2 |= ADC_CR2_ADON; // lancement de la conversion + while(!(ADC1->SR & ADC_SR_EOC) ) {} // attente de la fin de conversion + ADC1->SR &= ~ADC_SR_EOC; // validation de la conversion + return ADC1->DR ;//& ~((0x0F) << 12); // retour de la conversion +} diff --git a/Drivers/MyADC.h b/Drivers/MyADC.h new file mode 100644 index 0000000..03a79ba --- /dev/null +++ b/Drivers/MyADC.h @@ -0,0 +1,27 @@ +#ifndef MYADC_H +#define MYADC_H +#include "stm32f10x.h" + + +/* +***************************************************************************************** +* @brief +* @param -> - char input_channel : de 0 à 17 +* @Note -> +************************************************************************************************* +*/ +void MyADC_Init ( char input_channel); + + + +/* +***************************************************************************************** +* @brief +* @param -> - char input_channel : de 0 à 17 +* @Note -> Débute la conversion et retourne son résultat. + La fonction MyADC_Init doit avoir été lancée au préalable. +************************************************************************************************* +*/ +int convert_single(void); + +#endif