summaryrefslogtreecommitdiff
path: root/bsp/raspberry-pi
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2021-02-15 09:26:52 +0800
committerGitHub <[email protected]>2021-02-15 09:26:52 +0800
commit7d72bdf303f1b876c276694007f20622a126b19f (patch)
treea62725c58b3ffdb96a6251e5b5fb581d32a048f5 /bsp/raspberry-pi
parentbfde38030b2f988c30b864f7cd8c7f4c53a9762c (diff)
parent86ebf17a2360de740219cf9a5441cb72629c5a1d (diff)
Merge pull request #4314 from mysterywolf/mktime1
[bug][localtime]解决底层驱动格林威治时间与当地时间混乱使用的问题
Diffstat (limited to 'bsp/raspberry-pi')
-rw-r--r--bsp/raspberry-pi/raspi3-32/driver/drv_rtc.c9
-rw-r--r--bsp/raspberry-pi/raspi3-64/driver/drv_rtc.c8
2 files changed, 11 insertions, 6 deletions
diff --git a/bsp/raspberry-pi/raspi3-32/driver/drv_rtc.c b/bsp/raspberry-pi/raspi3-32/driver/drv_rtc.c
index 8a33e2be64..147504bd16 100644
--- a/bsp/raspberry-pi/raspi3-32/driver/drv_rtc.c
+++ b/bsp/raspberry-pi/raspi3-32/driver/drv_rtc.c
@@ -8,12 +8,15 @@
* 2019-07-29 zdzn first version
*/
+#include <rtthread.h>
+#include <rtdevice.h>
+#include <sys/time.h>
#include "drv_rtc.h"
#ifdef BSP_USING_RTC
#define RTC_I2C_BUS_NAME "i2c0"
-#define RTC_ADDR 0x68
+#define RTC_ADDR 0x68
static struct rt_device rtc_device;
static struct rt_i2c_bus_device *i2c_bus = RT_NULL;
@@ -185,13 +188,13 @@ static time_t raspi_get_timestamp(void)
tm_new.tm_min = ((buf[1] & 0x7F) / 16 + 0x30) + (buf[1] & 0x7F) % 16+ 0x30;
tm_new.tm_sec = ((buf[0] & 0x7F) / 16 + 0x30) + (buf[0] & 0x7F) % 16+ 0x30;
- return mktime(&tm_new);
+ return timegm(&tm_new);
}
static int raspi_set_timestamp(time_t timestamp)
{
struct tm *tblock;
- tblock = localtime(&timestamp);
+ tblock = gmtime(&timestamp);
buf[0] = 0;
buf[1] = tblock->tm_sec;
buf[2] = tblock->tm_min;
diff --git a/bsp/raspberry-pi/raspi3-64/driver/drv_rtc.c b/bsp/raspberry-pi/raspi3-64/driver/drv_rtc.c
index e38393bbd0..18fd6474a2 100644
--- a/bsp/raspberry-pi/raspi3-64/driver/drv_rtc.c
+++ b/bsp/raspberry-pi/raspi3-64/driver/drv_rtc.c
@@ -8,7 +8,9 @@
* 2019-07-29 zdzn first version
*/
-
+#include <rtthread.h>
+#include <rtdevice.h>
+#include <sys/time.h>
#include "drv_rtc.h"
#ifdef BSP_USING_RTC
@@ -33,13 +35,13 @@ static time_t raspi_get_timestamp(void)
tm_new.tm_min = ((buf[1] & 0x7F) / 16 + 0x30) + (buf[1] & 0x7F) % 16+ 0x30;
tm_new.tm_sec = ((buf[0] & 0x7F) / 16 + 0x30) + (buf[0] & 0x7F) % 16+ 0x30;
- return mktime(&tm_new);
+ return timegm(&tm_new);
}
static int raspi_set_timestamp(time_t timestamp)
{
struct tm *tblock;
- tblock = localtime(&timestamp);
+ tblock = gmtime(&timestamp);
buf[0] = 0;
buf[1] = tblock->tm_sec;
buf[2] = tblock->tm_min;