From 9bda2e8891351ccd1318613b079c28c1d129ab29 Mon Sep 17 00:00:00 2001 From: leo Date: Sat, 29 Nov 2025 21:16:10 +0100 Subject: [PATCH] =?UTF-8?q?Systick=20impl=C3=A9ment=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Services/Batterie.c | 12 ++++++------ Services/Systick.c | 17 +++++++++++++++++ Services/Systick.h | 6 ++++++ Services/Transmission.c | 20 +++++++++++++------- 4 files changed, 42 insertions(+), 13 deletions(-) create mode 100644 Services/Systick.c create mode 100644 Services/Systick.h diff --git a/Services/Batterie.c b/Services/Batterie.c index 59860ea..7451410 100644 --- a/Services/Batterie.c +++ b/Services/Batterie.c @@ -4,9 +4,9 @@ #include #include +extern uint32_t tickms; float d; -int p; -uint32_t cpt = 0; +uint32_t last2 = 0; void MyBatterie_Init(void){ MyGPIO_Init(GPIOC,4,In_Analog); // Init PORT pour recevoir tension @@ -20,16 +20,16 @@ void MyBatterie_Init(void){ } void handler_ADC (void){ - cpt++; - if (cpt >= 400000) { + //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,"%\r"); - cpt = 0; + send_USART_String(USART1,"%\n"); } start_conversion(ADC1); // Recommence la conversion pour le prochain } \ No newline at end of file diff --git a/Services/Systick.c b/Services/Systick.c new file mode 100644 index 0000000..19d15d1 --- /dev/null +++ b/Services/Systick.c @@ -0,0 +1,17 @@ +#include +#include + +uint32_t tickms = 0; + +void MySystick_Init(void){ + SystemCoreClockUpdate(); + SysTick->LOAD = (SystemCoreClock/1000)-1; + SysTick->VAL = 0; + SysTick->CTRL |= SysTick_CTRL_ENABLE; + SysTick->CTRL |= SysTick_CTRL_CLKSOURCE; + SysTick->CTRL |= SysTick_CTRL_TICKINT; +} + +void SysTick_Handler(void){ + tickms++; +} \ No newline at end of file diff --git a/Services/Systick.h b/Services/Systick.h new file mode 100644 index 0000000..7e54ed2 --- /dev/null +++ b/Services/Systick.h @@ -0,0 +1,6 @@ +#ifndef SYSTICK_H +#define SYSTICK_H + +void MySystick_Init(void); + +#endif \ No newline at end of file diff --git a/Services/Transmission.c b/Services/Transmission.c index 8e2c1e2..5c64c7c 100644 --- a/Services/Transmission.c +++ b/Services/Transmission.c @@ -2,16 +2,22 @@ #include #include +extern uint32_t tickms; +uint32_t last1 = 0; + void Transmission_Init(void){ My_USART_Init(USART1); } void Transmission_allure(int angle_voiles){ - if (angle_voiles < 23) send_USART_String(USART1,"Le bateau navigue vent debout. \n"); - else if (angle_voiles < 27) send_USART_String(USART1,"Le bateau navigue au pres. \n"); - else if (angle_voiles < 38) send_USART_String(USART1,"Le bateau navigue au pres bon plein. \n"); - else if (angle_voiles < 53) send_USART_String(USART1,"Le bateau navigue au travers. \n"); - else if (angle_voiles < 71) send_USART_String(USART1,"Le bateau navigue au grand large. \n"); - else if (angle_voiles <= 90) send_USART_String(USART1,"Le bateau navigue vent arriere. \n"); - else send_USART_String(USART1,"ERREUR DANS L'ANGLE!! \n"); + if (tickms-last1 >= 5000){ + last1 = tickms; + if (angle_voiles < 23) send_USART_String(USART1,"Le bateau navigue vent debout. \n"); + else if (angle_voiles < 27) send_USART_String(USART1,"Le bateau navigue au pres. \n"); + else if (angle_voiles < 38) send_USART_String(USART1,"Le bateau navigue au pres bon plein. \n"); + else if (angle_voiles < 53) send_USART_String(USART1,"Le bateau navigue au travers. \n"); + else if (angle_voiles < 71) send_USART_String(USART1,"Le bateau navigue au grand large. \n"); + else if (angle_voiles <= 90) send_USART_String(USART1,"Le bateau navigue vent arriere. \n"); + else send_USART_String(USART1,"ERREUR DANS L'ANGLE!! \n"); + } } \ No newline at end of file