Internal RTC Nucleo F767ZI

Dependents:   Internal_RTC

Committer:
shivanandgowdakr
Date:
Mon Sep 16 13:42:47 2019 +0000
Revision:
1:12b099f1e8da
Parent:
0:d8084da95aff
Internal RTC STM32 Simplified

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shivanandgowdakr 0:d8084da95aff 1 #include "mbed.h"
shivanandgowdakr 0:d8084da95aff 2 #include "RTC.h"
shivanandgowdakr 0:d8084da95aff 3 #include <string>
shivanandgowdakr 0:d8084da95aff 4
shivanandgowdakr 0:d8084da95aff 5
shivanandgowdakr 0:d8084da95aff 6
shivanandgowdakr 0:d8084da95aff 7 int Date_Time_Setting(struct tm curt,char *str)
shivanandgowdakr 0:d8084da95aff 8 {
shivanandgowdakr 0:d8084da95aff 9 int len=0;
shivanandgowdakr 0:d8084da95aff 10 len= strlen(str);
shivanandgowdakr 0:d8084da95aff 11 printf("len = %d",len);
shivanandgowdakr 0:d8084da95aff 12 if(len < 14)
shivanandgowdakr 0:d8084da95aff 13 return 0;
shivanandgowdakr 0:d8084da95aff 14
shivanandgowdakr 0:d8084da95aff 15 curt.tm_mday = ( str[0]-0x30)*10+(str[1]-0x30);
shivanandgowdakr 0:d8084da95aff 16 curt.tm_mon = ( str[2]-0x30)*10+(str[3]-0x30) -1;
shivanandgowdakr 0:d8084da95aff 17 curt.tm_year = (( str[4]-0x30)*1000 + (str[5]-0x30)*100 + (str[6]-0x30)*10 + (str[7]-0x30)) -1900 ;
shivanandgowdakr 0:d8084da95aff 18
shivanandgowdakr 0:d8084da95aff 19 curt.tm_hour=(str[8]-0x30)*10+(str[9]-0x30);
shivanandgowdakr 0:d8084da95aff 20 curt.tm_min=(str[10]-0x30)*10+(str[11]-0x30);
shivanandgowdakr 0:d8084da95aff 21 curt.tm_sec=(str[12]-0x30)*10+(str[13]-0x30);
shivanandgowdakr 0:d8084da95aff 22
shivanandgowdakr 0:d8084da95aff 23 time_t epoch = mktime(&curt);
shivanandgowdakr 0:d8084da95aff 24 if (epoch == (time_t) -1) {
shivanandgowdakr 0:d8084da95aff 25 error("Error in clock setting\n");
shivanandgowdakr 0:d8084da95aff 26 // Stop here
shivanandgowdakr 0:d8084da95aff 27 }
shivanandgowdakr 0:d8084da95aff 28 set_time(epoch);
shivanandgowdakr 0:d8084da95aff 29 return 1;
shivanandgowdakr 0:d8084da95aff 30 }
shivanandgowdakr 0:d8084da95aff 31
shivanandgowdakr 0:d8084da95aff 32
shivanandgowdakr 0:d8084da95aff 33 int iSetTerminalTime(char *tstring)
shivanandgowdakr 0:d8084da95aff 34 {
shivanandgowdakr 0:d8084da95aff 35 int ret=0;
shivanandgowdakr 0:d8084da95aff 36 struct tm curt;
shivanandgowdakr 1:12b099f1e8da 37 int index = 0;
shivanandgowdakr 1:12b099f1e8da 38
shivanandgowdakr 1:12b099f1e8da 39 uint8_t date, month, hours, minutes, seconds;
shivanandgowdakr 1:12b099f1e8da 40 uint16_t year;
shivanandgowdakr 0:d8084da95aff 41
shivanandgowdakr 1:12b099f1e8da 42 char* token = strtok(tstring, "/ :");
shivanandgowdakr 1:12b099f1e8da 43 while (token != NULL)
shivanandgowdakr 1:12b099f1e8da 44 {
shivanandgowdakr 1:12b099f1e8da 45 index++;
shivanandgowdakr 1:12b099f1e8da 46 if(index == 1)
shivanandgowdakr 1:12b099f1e8da 47 {
shivanandgowdakr 1:12b099f1e8da 48 date = atoi(token);
shivanandgowdakr 1:12b099f1e8da 49 }
shivanandgowdakr 1:12b099f1e8da 50 else if(index == 2)
shivanandgowdakr 1:12b099f1e8da 51 {
shivanandgowdakr 1:12b099f1e8da 52 month = atoi(token);
shivanandgowdakr 1:12b099f1e8da 53 }
shivanandgowdakr 1:12b099f1e8da 54 else if(index == 3)
shivanandgowdakr 1:12b099f1e8da 55 {
shivanandgowdakr 1:12b099f1e8da 56 year = atoi(token);
shivanandgowdakr 1:12b099f1e8da 57 }
shivanandgowdakr 1:12b099f1e8da 58 else if(index == 4)
shivanandgowdakr 1:12b099f1e8da 59 {
shivanandgowdakr 1:12b099f1e8da 60 hours = atoi(token);
shivanandgowdakr 1:12b099f1e8da 61 }
shivanandgowdakr 1:12b099f1e8da 62 else if(index == 5)
shivanandgowdakr 1:12b099f1e8da 63 {
shivanandgowdakr 1:12b099f1e8da 64 minutes = atoi(token);
shivanandgowdakr 1:12b099f1e8da 65 }
shivanandgowdakr 1:12b099f1e8da 66 else if(index == 6)
shivanandgowdakr 1:12b099f1e8da 67 {
shivanandgowdakr 1:12b099f1e8da 68 seconds = atoi(token);
shivanandgowdakr 1:12b099f1e8da 69 }
shivanandgowdakr 1:12b099f1e8da 70
shivanandgowdakr 1:12b099f1e8da 71 printf(" %d %s\n", index, token);
shivanandgowdakr 1:12b099f1e8da 72 token = strtok(NULL, "/ :");
shivanandgowdakr 1:12b099f1e8da 73 }
shivanandgowdakr 0:d8084da95aff 74
shivanandgowdakr 1:12b099f1e8da 75 curt.tm_mday = date;
shivanandgowdakr 1:12b099f1e8da 76 curt.tm_mon = month - 1;
shivanandgowdakr 1:12b099f1e8da 77 curt.tm_year = year -1900 ;
shivanandgowdakr 1:12b099f1e8da 78
shivanandgowdakr 1:12b099f1e8da 79 curt.tm_hour = hours;
shivanandgowdakr 1:12b099f1e8da 80 curt.tm_min = minutes;
shivanandgowdakr 1:12b099f1e8da 81 curt.tm_sec = seconds;
shivanandgowdakr 1:12b099f1e8da 82
shivanandgowdakr 1:12b099f1e8da 83 time_t epoch = mktime(&curt);
shivanandgowdakr 1:12b099f1e8da 84
shivanandgowdakr 1:12b099f1e8da 85 if (epoch == (time_t) -1)
shivanandgowdakr 1:12b099f1e8da 86 {
shivanandgowdakr 1:12b099f1e8da 87 error("Error in clock setting\n");
shivanandgowdakr 1:12b099f1e8da 88 // Stop here
shivanandgowdakr 0:d8084da95aff 89 }
shivanandgowdakr 1:12b099f1e8da 90 else
shivanandgowdakr 1:12b099f1e8da 91 {
shivanandgowdakr 1:12b099f1e8da 92 set_time(epoch);
shivanandgowdakr 1:12b099f1e8da 93 printf("time is Set: \r\n");
shivanandgowdakr 1:12b099f1e8da 94 }
shivanandgowdakr 0:d8084da95aff 95 return ret;
shivanandgowdakr 0:d8084da95aff 96 }
shivanandgowdakr 0:d8084da95aff 97
shivanandgowdakr 0:d8084da95aff 98
shivanandgowdakr 0:d8084da95aff 99 int chk_time (char *str)
shivanandgowdakr 0:d8084da95aff 100 {
shivanandgowdakr 0:d8084da95aff 101 int HH,MM,SS;
shivanandgowdakr 0:d8084da95aff 102 HH=(str[0]-0x30)*10+(str[1]-0x30);
shivanandgowdakr 0:d8084da95aff 103 MM=(str[2]-0x30)*10+(str[3]-0x30);
shivanandgowdakr 0:d8084da95aff 104 SS=(str[4]-0x30)*10+(str[5]-0x30);
shivanandgowdakr 0:d8084da95aff 105
shivanandgowdakr 0:d8084da95aff 106 if ( HH < 0 || HH > 23 || MM < 0 || MM > 59 || SS < 0 || SS > 59 )
shivanandgowdakr 0:d8084da95aff 107 return -1;
shivanandgowdakr 0:d8084da95aff 108
shivanandgowdakr 0:d8084da95aff 109 return 1;
shivanandgowdakr 0:d8084da95aff 110 }
shivanandgowdakr 0:d8084da95aff 111
shivanandgowdakr 0:d8084da95aff 112 int chk_date (char *str)
shivanandgowdakr 0:d8084da95aff 113 {
shivanandgowdakr 0:d8084da95aff 114 int epos_date=0,epos_month=0,epos_year=0;
shivanandgowdakr 0:d8084da95aff 115
shivanandgowdakr 0:d8084da95aff 116 epos_date = ( str[0]-0x30)*10+(str[1]-0x30);
shivanandgowdakr 0:d8084da95aff 117 epos_month = ( str[2]-0x30)*10+(str[3]-0x30);
shivanandgowdakr 0:d8084da95aff 118 epos_year = ( str[4]-0x30)*1000+ (str[5]-0x30)*100 + (str[6]-0x30)*10 + (str[7]-0x30);
shivanandgowdakr 0:d8084da95aff 119
shivanandgowdakr 0:d8084da95aff 120
shivanandgowdakr 0:d8084da95aff 121 if ( epos_month < 1 || epos_date < 1 || epos_date > 31 || epos_month > 12 || epos_year < 2008 ) return ERROR ;
shivanandgowdakr 0:d8084da95aff 122
shivanandgowdakr 0:d8084da95aff 123 else if(epos_month == 1 || epos_month == 3 || epos_month == 5 || epos_month == 7 || epos_month == 8 || epos_month ==10 ||epos_month == 12) {
shivanandgowdakr 0:d8084da95aff 124
shivanandgowdakr 0:d8084da95aff 125 if (epos_date > 31)
shivanandgowdakr 0:d8084da95aff 126 return -1;
shivanandgowdakr 0:d8084da95aff 127 }
shivanandgowdakr 0:d8084da95aff 128
shivanandgowdakr 0:d8084da95aff 129 else if (epos_month == 4 || epos_month == 6 || epos_month == 9 || epos_month == 11) {
shivanandgowdakr 0:d8084da95aff 130
shivanandgowdakr 0:d8084da95aff 131 if (epos_date > 30)
shivanandgowdakr 0:d8084da95aff 132 return -1;
shivanandgowdakr 0:d8084da95aff 133 }
shivanandgowdakr 0:d8084da95aff 134
shivanandgowdakr 0:d8084da95aff 135 else if (epos_month == 2 )
shivanandgowdakr 0:d8084da95aff 136
shivanandgowdakr 0:d8084da95aff 137 {
shivanandgowdakr 0:d8084da95aff 138 if ( !(epos_year%400) || (epos_year%100 != 0 && epos_year%4==0 ) ) {
shivanandgowdakr 0:d8084da95aff 139 if (epos_date > 29 ) return -1;
shivanandgowdakr 0:d8084da95aff 140 }
shivanandgowdakr 0:d8084da95aff 141
shivanandgowdakr 0:d8084da95aff 142 else if( epos_date > 28 ) return -1;
shivanandgowdakr 0:d8084da95aff 143 }
shivanandgowdakr 0:d8084da95aff 144
shivanandgowdakr 0:d8084da95aff 145
shivanandgowdakr 0:d8084da95aff 146 return 1;
shivanandgowdakr 0:d8084da95aff 147 }
shivanandgowdakr 0:d8084da95aff 148
shivanandgowdakr 0:d8084da95aff 149 void Get_Date_Time(char *date_string,char *time_string, char *DTSTRING)
shivanandgowdakr 0:d8084da95aff 150 {
shivanandgowdakr 0:d8084da95aff 151
shivanandgowdakr 0:d8084da95aff 152 time_t curr_time;
shivanandgowdakr 0:d8084da95aff 153 tm * curr_tm;
shivanandgowdakr 0:d8084da95aff 154 time(&curr_time);
shivanandgowdakr 0:d8084da95aff 155 curr_tm = localtime(&curr_time);
shivanandgowdakr 1:12b099f1e8da 156 strftime(date_string,10,"%Y/%m/%d ",curr_tm);
shivanandgowdakr 0:d8084da95aff 157 }
shivanandgowdakr 0:d8084da95aff 158
shivanandgowdakr 0:d8084da95aff 159
shivanandgowdakr 0:d8084da95aff 160 void Get_Date_Time( char *DTSTRING)
shivanandgowdakr 0:d8084da95aff 161 {
shivanandgowdakr 0:d8084da95aff 162
shivanandgowdakr 0:d8084da95aff 163 time_t curr_time;
shivanandgowdakr 0:d8084da95aff 164 tm * curr_tm;
shivanandgowdakr 0:d8084da95aff 165 time(&curr_time);
shivanandgowdakr 0:d8084da95aff 166 curr_tm = localtime(&curr_time);
shivanandgowdakr 1:12b099f1e8da 167 strftime(DTSTRING,20,"%Y/%m/%d %H:%M:%S",curr_tm);
shivanandgowdakr 0:d8084da95aff 168 // printf("Time is : %s",DTSTRING);
shivanandgowdakr 0:d8084da95aff 169
shivanandgowdakr 0:d8084da95aff 170 }