From 4fe43b9d7acff787641c70510700ca86b99e3d10 Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 28 Nov 2025 22:18:13 +0100 Subject: [PATCH] Envoie de batterie propre --- Services/Batterie.c | 22 +++++++++++++--------- drivers/USART.c | 7 +++++++ drivers/USART.h | 2 ++ 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Services/Batterie.c b/Services/Batterie.c index a9cdad0..1399f08 100644 --- a/Services/Batterie.c +++ b/Services/Batterie.c @@ -6,6 +6,7 @@ float d; int p; +uint32_t cpt = 0; void MyBatterie_Init(void){ MyGPIO_Init(GPIOC,4,In_Analog); // Init PORT pour recevoir tension @@ -19,14 +20,17 @@ void MyBatterie_Init(void){ } void handler_ADC (void){ - d = ADC1->DR &~ (0xF << 12); // Retourne valeur numérique - d = d*3.3/4096; - d = d*13*100/12; - //if ((p%10 > (int)d%10+2) || (p%10 < (int)d%10-2)){ - p = (int) d; - send_USART(USART1,(p/10) + '0'); // Envoie le chiffre des dizaines - send_USART(USART1,(p%10) + '0'); // Envoie le chiffre des unités - send_USART(USART1,'%'); - //} + cpt++; + if (cpt >= 400000) { + 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(USART1,'%'); + send_USART(USART1,'\r'); + cpt = 0; + } start_conversion(ADC1); // Recommence la conversion pour le prochain } \ No newline at end of file diff --git a/drivers/USART.c b/drivers/USART.c index 6355a33..2a1cf77 100644 --- a/drivers/USART.c +++ b/drivers/USART.c @@ -38,6 +38,13 @@ void send_USART(USART_TypeDef *USART, char data){ while(!(USART->SR & USART_SR_TXE)) {} // Attente de la fin de transmission --TC ????? Inverser 2 lignes +TC a la fin } +void send_USART_String(USART_TypeDef* USARTx, char* s) { + while (*s != '\0') { + send_USART(USARTx, *s); // ta fonction qui envoie un char + s++; + } +} + char read_USART(USART_TypeDef *USART){ while (!(USART->SR & USART_SR_RXNE)){} return USART->DR; diff --git a/drivers/USART.h b/drivers/USART.h index 46e6072..8ea57fe 100644 --- a/drivers/USART.h +++ b/drivers/USART.h @@ -1,12 +1,14 @@ #ifndef MYUSART_H #define MYUSART_H #include +#include #define send_USART_init(USART) USART->CR1 |= USART_CR1_TE; // Envoi de la première trame d'attente #define read_USART_init(USART) USART->CR1 |= USART_CR1_RE; // En attente du premier bit de start void My_USART_Init(USART_TypeDef *USART); void send_USART(USART_TypeDef *USART, char data); +void send_USART_String(USART_TypeDef *USART, char* s); char read_USART(USART_TypeDef *USART); void MyUSART_ActiveIT(USART_TypeDef *USART, int Prio, void (*IT_function) (void));