#include "ADC.h" void MyADC_init(MyADC_Struct_TypeDef* myADC) { MyGPIO_Struct_TypeDef Port_ADC; RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6; if(myADC->ADC==ADC1) { RCC->APB2ENR |= 0x01<<9; ADC1->CR2|= 0x01; // on active l'adc ADC1->SQR1&= ~(0x0F<<20);// 1 convertion ADC2->SQR3&= ~0x1F;// on met 0 la séquance 1 ADC1->SQR3|= myADC->channel;// on indique le channel a convertir } else if(myADC->ADC==ADC2) { RCC->APB2ENR |= 0x01<<8; ADC2->CR2|= 0x01; // on active l'adc ADC2->SQR1&= ~(0x0F<<20);// 1 convertion ADC2->SQR3&= ~0x1F;// on met 0 la séquance 1 ADC2->SQR3|= myADC->channel;// on indique le channel a convertir } switch (myADC->channel) { case 0: Port_ADC.GPIO=GPIOA; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=0; MyGPIO_Init(&Port_ADC); break; case 1: Port_ADC.GPIO=GPIOA; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=1; MyGPIO_Init(&Port_ADC); break; case 2: Port_ADC.GPIO=GPIOA; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=2; MyGPIO_Init(&Port_ADC); break; case 3: Port_ADC.GPIO=GPIOA; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=3; MyGPIO_Init(&Port_ADC); break; case 4: Port_ADC.GPIO=GPIOA; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=4; MyGPIO_Init(&Port_ADC); break; case 5: Port_ADC.GPIO=GPIOA; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=5; MyGPIO_Init(&Port_ADC); break; case 6: Port_ADC.GPIO=GPIOA; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=6; MyGPIO_Init(&Port_ADC); break; case 7: Port_ADC.GPIO=GPIOA; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=7; MyGPIO_Init(&Port_ADC); break; case 8: Port_ADC.GPIO=GPIOB; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=0; MyGPIO_Init(&Port_ADC); break; case 9: Port_ADC.GPIO=GPIOB; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=1; MyGPIO_Init(&Port_ADC); break; case 10: Port_ADC.GPIO=GPIOC; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=0; MyGPIO_Init(&Port_ADC); break; case 11: Port_ADC.GPIO=GPIOC; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=1; MyGPIO_Init(&Port_ADC); break; case 12: Port_ADC.GPIO=GPIOC; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=2; MyGPIO_Init(&Port_ADC); break; case 13: Port_ADC.GPIO=GPIOC; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=3; MyGPIO_Init(&Port_ADC); break; case 14: Port_ADC.GPIO=GPIOC; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=4; MyGPIO_Init(&Port_ADC); break; case 15: Port_ADC.GPIO=GPIOC; Port_ADC.GPIO_Conf=In_Analog; Port_ADC.GPIO_Pin=5; MyGPIO_Init(&Port_ADC); break; } } int conversion(MyADC_Struct_TypeDef* myADC) { if() { } 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 }