Projet_Voilier/Services/Batterie.c
2025-11-30 12:39:05 +01:00

46 lines
No EOL
1.1 KiB
C

#include <stm32f10x.h>
#include <Batterie.h>
#include <GPIO.h>
#include <ADC.h>
#include <USART.h>
extern uint32_t tickms;
float d;
uint32_t last2 = 0;
void MyBatterie_Init(void){
MyGPIO_Init(GPIOC,4,In_Analog); // Init PORT pour recevoir tension
MyADC_Init(ADC1,14); // Init ADC channel 14 pour convertir valeur
MyADC_ActiveIT(ADC1,15,&handler_ADC); // Init interruption quand conversion finie
//My_USART_Init(USART1); // Init USART pour envoyer batterie
start_conversion(ADC1); // Premiere conversion
}
void handler_ADC (void){
//last2++;
//if (tickms - last2 >= 2000) {
//last2 = tickms;
d = ADC1->DR &~ (0xF << 12); // Retourne valeur numérique
d = d*3.3/4096;
d = d*13*100/12;
//send_USART_String(USART1,"Batterie : ");
//send_USART(USART1,((int)d/10) + '0'); // Envoie le chiffre des dizaines
//send_USART(USART1,((int)d%10) + '0'); // Envoie le chiffre des unités
//send_USART_String(USART1,"%\n");
//}
//start_conversion(ADC1); // Recommence la conversion pour le prochain
}
void Gestion_Conversion_ADC(void){
if (tickms - last2 >= 1000) {
last2 = tickms;
start_conversion(ADC1);
}
}
int MyBatterie_val(){
return (int)d;
}