Skip to content

Commit

Permalink
Updates
Browse files Browse the repository at this point in the history
  • Loading branch information
MaJerle committed Aug 16, 2015
1 parent a5fb21f commit bb744a5
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 73 deletions.
92 changes: 46 additions & 46 deletions 00-STM32F429_LIBRARIES/tm_stm32f4_rtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,21 @@

/* Private macros */
/* Internal status registers for RTC */
#define RTC_STATUS_REG RTC_BKP_DR19 /* Status Register */
#define RTC_STATUS_INIT_OK 0x1234 /* RTC initialised */
#define RTC_STATUS_TIME_OK 0x4321 /* RTC time OK */
#define RTC_STATUS_ZERO 0x0000
#define RTC_STATUS_REG RTC_BKP_DR19 /* Status Register */
#define RTC_STATUS_INIT_OK 0x1234 /* RTC initialised */
#define RTC_STATUS_TIME_OK 0x4321 /* RTC time OK */
#define RTC_STATUS_ZERO 0x0000

/* Internal RTC defines */
#define TM_RTC_LEAP_YEAR(year) ((((year) % 4 == 0) && ((year) % 100 != 0)) || ((year) % 400 == 0))
#define TM_RTC_DAYS_IN_YEAR(x) TM_RTC_LEAP_YEAR(x) ? 366 : 365
#define TM_RTC_OFFSET_YEAR 1970
#define TM_RTC_SECONDS_PER_DAY 86400
#define TM_RTC_SECONDS_PER_HOUR 3600
#define TM_RTC_SECONDS_PER_MINUTE 60
#define TM_RTC_BCD2BIN(x) ((((x) >> 4) & 0x0F) * 10 + ((x) & 0x0F))
#define TM_RTC_CHAR2NUM(x) ((x) - '0')
#define TM_RTC_CHARISNUM(x) ((x) >= '0' && (x) <= '9')
#define RTC_LEAP_YEAR(year) ((((year) % 4 == 0) && ((year) % 100 != 0)) || ((year) % 400 == 0))
#define RTC_DAYS_IN_YEAR(x) RTC_LEAP_YEAR(x) ? 366 : 365
#define RTC_OFFSET_YEAR 1970
#define RTC_SECONDS_PER_DAY 86400
#define RTC_SECONDS_PER_HOUR 3600
#define RTC_SECONDS_PER_MINUTE 60
#define RTC_BCD2BIN(x) ((((x) >> 4) & 0x0F) * 10 + ((x) & 0x0F))
#define RTC_CHAR2NUM(x) ((x) - '0')
#define RTC_CHARISNUM(x) ((x) >= '0' && (x) <= '9')

/* Internal functions */
void TM_RTC_Config(TM_RTC_ClockSource_t source);
Expand Down Expand Up @@ -135,13 +135,13 @@ TM_RTC_Result_t TM_RTC_SetDateTime(TM_RTC_t* data, TM_RTC_Format_t format) {

/* Check date and time validation */
if (format == TM_RTC_Format_BCD) {
tmp.date = TM_RTC_BCD2BIN(data->date);
tmp.month = TM_RTC_BCD2BIN(data->month);
tmp.year = TM_RTC_BCD2BIN(data->year);
tmp.hours = TM_RTC_BCD2BIN(data->hours);
tmp.minutes = TM_RTC_BCD2BIN(data->minutes);
tmp.seconds = TM_RTC_BCD2BIN(data->seconds);
tmp.day = TM_RTC_BCD2BIN(data->day);
tmp.date = RTC_BCD2BIN(data->date);
tmp.month = RTC_BCD2BIN(data->month);
tmp.year = RTC_BCD2BIN(data->year);
tmp.hours = RTC_BCD2BIN(data->hours);
tmp.minutes = RTC_BCD2BIN(data->minutes);
tmp.seconds = RTC_BCD2BIN(data->seconds);
tmp.day = RTC_BCD2BIN(data->day);
} else {
tmp.date = data->date;
tmp.month = data->month;
Expand All @@ -158,7 +158,7 @@ TM_RTC_Result_t TM_RTC_SetDateTime(TM_RTC_t* data, TM_RTC_Format_t format) {
tmp.month == 0 ||
tmp.month > 12 ||
tmp.date == 0 ||
tmp.date > TM_RTC_Months[TM_RTC_LEAP_YEAR(2000 + tmp.year) ? 1 : 0][tmp.month - 1] ||
tmp.date > TM_RTC_Months[RTC_LEAP_YEAR(2000 + tmp.year) ? 1 : 0][tmp.month - 1] ||
tmp.hours > 23 ||
tmp.minutes > 59 ||
tmp.seconds > 59 ||
Expand Down Expand Up @@ -214,56 +214,56 @@ TM_RTC_Result_t TM_RTC_SetDateTimeString(char* str) {

/* Get date */
tmp.date = 0;
while (TM_RTC_CHARISNUM(*(str + i))) {
tmp.date = tmp.date * 10 + TM_RTC_CHAR2NUM(*(str + i));
while (RTC_CHARISNUM(*(str + i))) {
tmp.date = tmp.date * 10 + RTC_CHAR2NUM(*(str + i));
i++;
}
i++;

/* Get month */
tmp.month = 0;
while (TM_RTC_CHARISNUM(*(str + i))) {
tmp.month = tmp.month * 10 + TM_RTC_CHAR2NUM(*(str + i));
while (RTC_CHARISNUM(*(str + i))) {
tmp.month = tmp.month * 10 + RTC_CHAR2NUM(*(str + i));
i++;
}
i++;

/* Get year */
tmp.year = 0;
while (TM_RTC_CHARISNUM(*(str + i))) {
tmp.year = tmp.year * 10 + TM_RTC_CHAR2NUM(*(str + i));
while (RTC_CHARISNUM(*(str + i))) {
tmp.year = tmp.year * 10 + RTC_CHAR2NUM(*(str + i));
i++;
}
i++;

/* Get day in a week */
tmp.day = 0;
while (TM_RTC_CHARISNUM(*(str + i))) {
tmp.day = tmp.day * 10 + TM_RTC_CHAR2NUM(*(str + i));
while (RTC_CHARISNUM(*(str + i))) {
tmp.day = tmp.day * 10 + RTC_CHAR2NUM(*(str + i));
i++;
}
i++;

/* Get hours */
tmp.hours = 0;
while (TM_RTC_CHARISNUM(*(str + i))) {
tmp.hours = tmp.hours * 10 + TM_RTC_CHAR2NUM(*(str + i));
while (RTC_CHARISNUM(*(str + i))) {
tmp.hours = tmp.hours * 10 + RTC_CHAR2NUM(*(str + i));
i++;
}
i++;

/* Get minutes */
tmp.minutes = 0;
while (TM_RTC_CHARISNUM(*(str + i))) {
tmp.minutes = tmp.minutes * 10 + TM_RTC_CHAR2NUM(*(str + i));
while (RTC_CHARISNUM(*(str + i))) {
tmp.minutes = tmp.minutes * 10 + RTC_CHAR2NUM(*(str + i));
i++;
}
i++;

/* Get seconds */
tmp.seconds = 0;
while (TM_RTC_CHARISNUM(*(str + i))) {
tmp.seconds = tmp.seconds * 10 + TM_RTC_CHAR2NUM(*(str + i));
while (RTC_CHARISNUM(*(str + i))) {
tmp.seconds = tmp.seconds * 10 + RTC_CHAR2NUM(*(str + i));
i++;
}
i++;
Expand Down Expand Up @@ -319,12 +319,12 @@ uint8_t TM_RTC_GetDaysInMonth(uint8_t month, uint8_t year) {
}

/* Return days in month */
return TM_RTC_Months[TM_RTC_LEAP_YEAR(2000 + year) ? 1 : 0][month - 1];
return TM_RTC_Months[RTC_LEAP_YEAR(2000 + year) ? 1 : 0][month - 1];
}

uint16_t TM_RTC_GetDaysInYear(uint8_t year) {
/* Return days in year */
return TM_RTC_DAYS_IN_YEAR(2000 + year);
return RTC_DAYS_IN_YEAR(2000 + year);
}

void TM_RTC_Config(TM_RTC_ClockSource_t source) {
Expand Down Expand Up @@ -435,22 +435,22 @@ uint32_t TM_RTC_GetUnixTimeStamp(TM_RTC_t* data) {
uint16_t i;
uint16_t year = (uint16_t) (data->year + 2000);
/* Year is below offset year */
if (year < TM_RTC_OFFSET_YEAR) {
if (year < RTC_OFFSET_YEAR) {
return 0;
}
/* Days in back years */
for (i = TM_RTC_OFFSET_YEAR; i < year; i++) {
days += TM_RTC_DAYS_IN_YEAR(i);
for (i = RTC_OFFSET_YEAR; i < year; i++) {
days += RTC_DAYS_IN_YEAR(i);
}
/* Days in current year */
for (i = 1; i < data->month; i++) {
days += TM_RTC_Months[TM_RTC_LEAP_YEAR(year)][i - 1];
days += TM_RTC_Months[RTC_LEAP_YEAR(year)][i - 1];
}
/* Day starts with 1 */
days += data->date - 1;
seconds = days * TM_RTC_SECONDS_PER_DAY;
seconds += data->hours * TM_RTC_SECONDS_PER_HOUR;
seconds += data->minutes * TM_RTC_SECONDS_PER_MINUTE;
seconds = days * RTC_SECONDS_PER_DAY;
seconds += data->hours * RTC_SECONDS_PER_HOUR;
seconds += data->minutes * RTC_SECONDS_PER_MINUTE;
seconds += data->seconds;

/* seconds = days * 86400; */
Expand Down Expand Up @@ -482,7 +482,7 @@ void TM_RTC_GetDateTimeFromUnix(TM_RTC_t* data, uint32_t unix) {
/* Get year */
year = 1970;
while (1) {
if (TM_RTC_LEAP_YEAR(year)) {
if (RTC_LEAP_YEAR(year)) {
if (unix >= 366) {
unix -= 366;
} else {
Expand All @@ -499,7 +499,7 @@ void TM_RTC_GetDateTimeFromUnix(TM_RTC_t* data, uint32_t unix) {
data->year = (uint8_t) (year - 2000);
/* Get month */
for (data->month = 0; data->month < 12; data->month++) {
if (TM_RTC_LEAP_YEAR(year) && unix >= (uint32_t)TM_RTC_Months[1][data->month]) {
if (RTC_LEAP_YEAR(year) && unix >= (uint32_t)TM_RTC_Months[1][data->month]) {
unix -= TM_RTC_Months[1][data->month];
} else if (unix >= (uint32_t)TM_RTC_Months[0][data->month]) {
unix -= TM_RTC_Months[0][data->month];
Expand Down
2 changes: 1 addition & 1 deletion 00-STM32F429_LIBRARIES/tm_stm32f4_spi.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ typedef enum {
} TM_SPI_Mode_t;

/**
* @brief USART PinsPack enumeration to select pins combination for USART
* @brief SPI PinsPack enumeration to select pins combination for SPI
*/
typedef enum {
TM_SPI_PinsPack_1, /*!< Select PinsPack1 from Pinout table for specific SPI */
Expand Down
Loading

0 comments on commit bb744a5

Please sign in to comment.