From 33d73b2c82fb8cbf00d8104636bbcc7a5dbb4399 Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Tue, 11 Apr 2023 11:28:42 +0200 Subject: [PATCH] Added MyRTC_Struct_TypeDef, modified battery function to show the time, and the percent --- driver/adc.c | 2 +- implementation/battery.c | 40 +++++++++++++++++++++------------ implementation/battery.h | 4 ++++ implementation/rtc.c | 16 ++++++------- implementation/rtc.h | 12 +++++++++- keilproject/Source/Principale.c | 2 +- 6 files changed, 51 insertions(+), 25 deletions(-) diff --git a/driver/adc.c b/driver/adc.c index 4110fa0..7259e4c 100644 --- a/driver/adc.c +++ b/driver/adc.c @@ -32,7 +32,7 @@ void MyADC_ActiveIT(ADC_TypeDef * ADC, uint8_t Prio) { ADC->CR1 |= ADC_CR1_EOCIE; //Interruption active NVIC->IP[ADC1_2_IRQn] |= (Prio << 0x4); //Prio de l'interruption (p.197 manuel reference RM0008 pour ADC1_IRQn) - NVIC->ISER[0] |= (0x1<ISER[0] |= (1<10) { batteryGauge = 10; } - batteryBar[0] = '['; - for(i=1; i<=(10-batteryGauge); i++) - { - batteryBar[i]='.'; - } - while(i<11) + char timerClock[8] = {'[','.','.','h','.','.',']',0x20}; + sprintf(timerClock+1,"%.*d",2,rtcBattery.hours); + timerClock[3]=':'; + sprintf(timerClock+4,"%.*d",2,rtcBattery.minutes); + timerClock[3]='\t'; + MyUART_SendArray(&uartCool, (uint8_t *)timerClock, 8); + + for(i=(10-batteryGauge); i<11; i++) { batteryBar[i]='#'; - i++; } - batteryBar[i]=']'; - MyUART_SendArray(&uartCool, batteryBar, 12); + MyUART_SendArray(&uartCool, batteryBar, 13); + + char batteryPercentString[3]; + sprintf(batteryPercentString,"%.*g",2,percentBattery*100); + batteryPercentString[2]='%'; + MyUART_SendArray(&uartCool, (uint8_t *)batteryPercentString, 6); + + MyUART_Send(&uartCool, '\n'); } void initBattery(void) @@ -32,6 +44,6 @@ void initBattery(void) MyADC_Init_Periph(battery); MyADC_Struct_TypeDef adcBattery = {ADC1,10,cycles41d5}; MyADC_Init(&adcBattery); - MyGPIO_Struct_TypeDef gpioBattery = {GPIOC,0,In_Analog};; + MyGPIO_Struct_TypeDef gpioBattery = {GPIOC,0,In_Analog}; MyGPIO_Init(&gpioBattery); } diff --git a/implementation/battery.h b/implementation/battery.h index 4170796..88b754b 100644 --- a/implementation/battery.h +++ b/implementation/battery.h @@ -1,6 +1,10 @@ #ifndef BATTERY_H #define BATTERY_H #include "stm32f10x.h" +#include "adc.h" +#include "remote.h" +#include "rtc.h" +#include #define MAX_BAT 1145 void battery(uint32_t data); diff --git a/implementation/rtc.c b/implementation/rtc.c index 8757e9b..59d318b 100644 --- a/implementation/rtc.c +++ b/implementation/rtc.c @@ -11,7 +11,7 @@ void MyRTC_Init(void) MyI2C_Init(I2C2, 15, IT_I2C_Err); } -void MyRTC_GetTime(int* sec, int* min, int* hour, int* day, int* date, int* month, int* year) +void MyRTC_GetTime(MyRTC_Struct_TypeDef * rtc) { MyI2C_RecSendData_Typedef data; char regCopy = 0; @@ -21,17 +21,17 @@ void MyRTC_GetTime(int* sec, int* min, int* hour, int* day, int* date, int* mont data.Nb_Data = 1; MyI2C_GetString(I2C2, 0x00, &data); - *sec = ((regCopy >> 4) & 0x07) * 10 + (regCopy & 0x0F); + rtc->seconds = ((regCopy >> 4) & 0x07) * 10 + (regCopy & 0x0F); MyI2C_GetString(I2C2, 0x01, &data); - *min = ((regCopy >> 4) & 0x07) * 10 + (regCopy & 0x0F); + rtc->minutes = ((regCopy >> 4) & 0x07) * 10 + (regCopy & 0x0F); MyI2C_GetString(I2C2, 0x02, &data); - *hour = 0; + rtc->hours = 0; MyI2C_GetString(I2C2, 0x03, &data); - *day = (regCopy & 0x07); + rtc->day = (regCopy & 0x07); MyI2C_GetString(I2C2, 0x04, &data); - *date = ((regCopy >> 4) & 0x03) * 10 + (regCopy & 0x0F); + rtc->date = ((regCopy >> 4) & 0x03) * 10 + (regCopy & 0x0F); MyI2C_GetString(I2C2, 0x05, &data); - *month = ((regCopy >> 4) & 0x01) * 10 + (regCopy & 0x0F); + rtc->month = ((regCopy >> 4) & 0x01) * 10 + (regCopy & 0x0F); MyI2C_GetString(I2C2, 0x06, &data); - *year = ((regCopy >> 4) & 0xF0) * 10 + (regCopy & 0x0F) + 2000; + rtc->year = ((regCopy >> 4) & 0xF0) * 10 + (regCopy & 0x0F) + 2000; } diff --git a/implementation/rtc.h b/implementation/rtc.h index dde573c..7e4deb2 100644 --- a/implementation/rtc.h +++ b/implementation/rtc.h @@ -3,7 +3,17 @@ #include "stm32f10x.h" #include "MyI2C.h" +typedef struct{ + int seconds; + int minutes; + int hours; + int day; + int date; + int month; + int year; +} MyRTC_Struct_TypeDef; + void MyRTC_Init(void); -void MyRTC_GetTime(int* sec, int* min, int* hour, int* day, int* date, int* month, int* year); +void MyRTC_GetTime(MyRTC_Struct_TypeDef * rtc); #endif diff --git a/keilproject/Source/Principale.c b/keilproject/Source/Principale.c index d4439c1..b1923c2 100644 --- a/keilproject/Source/Principale.c +++ b/keilproject/Source/Principale.c @@ -28,6 +28,6 @@ void initImplementation(void) MyMotor_ChangeSpeed(0); MyMotor_ChangeDirection(HORAIRE); MyRTC_Init(); - accelerometre(); initBattery(); + accelerometre(); }