/* * RTC.c * * Created on: 15 janv. 2019 * Author: e_rcluze */ #include "RTC.h" void readHeure(Heure *heure){ uint8_t tab[2]; readRTC(MINUTES,tab,2); heure->minute = (((tab[0]&0x70)>>4)*10)+(tab[0]&0X0F); heure->heure = (((tab[1]&0X30)>>4)*10)+(tab[1]&0X0F); } void readDate(Date *date){ uint8_t tab[7]; readRTC(SECOND,tab,7); date->second=(((tab[0]&0X70)>>4)*10)+(tab[0]&0X0F); date->minute=(((tab[1]&0x70)>>4)*10)+(tab[1]&0X0F); date->heure=(((tab[2]&0X30)>>4)*10)+(tab[2]&0X0F); date->jour=(((tab[4]&0X30)>>4)*10)+(tab[4]&0X0F); date->mois=(((tab[5]&0X10)>>4)*10)+(tab[5]&0X0F); date->annee=((tab[6]>>4)*10)+(tab[6]&0X0F); } void WriteDate(Date *date){ uint8_t tab[7]; tab[0]=((date->second/10)<<4) + (date->second%10); tab[1]=((date->minute/10)<<4) + (date->minute%10); tab[2]=((date->heure/10)<<4) + (date->heure%10); tab[3]=date->joursemaine; tab[4]=((date->jour/10)<<4) + (date->jour%10); tab[5]=((date->mois/10)<<4) + (date->mois%10); tab[6]=((date->annee/10)<<4) + (date->annee%10); writeRTC(SECOND,tab,7); } void redemareRTC(){ uint8_t pt[1]; readRTC(ALARM_HOURS,pt,1); pt[0]=pt[0]&!0x40; writeRTC(ALARM_HOURS,pt,1); } void testRTC(){ Date d; d.annee=2020; d.mois=1; d.jour=20; d.joursemaine=1; d.heure=14; d.minute=0; d.second=0; writeDate(&d); redemareRTC(); HAL_Delay(2000); readDate(&d); HAL_Delay(1); } void testBatteryRTC(){ redemareRTC(); Date d; readDate(&d); HAL_Delay(1); }