Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
okll00
rt-thread
提交
7fa4c90e
R
rt-thread
项目概览
okll00
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
7fa4c90e
编写于
5月 22, 2020
作者:
B
Bernard Xiong
提交者:
GitHub
5月 22, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3591 from tyustli/master
[bsp] fix stm32 f1 series rtc bug
上级
e46c8b83
55edb964
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
57 addition
and
7 deletion
+57
-7
bsp/stm32/libraries/HAL_Drivers/drv_rtc.c
bsp/stm32/libraries/HAL_Drivers/drv_rtc.c
+57
-7
未找到文件。
bsp/stm32/libraries/HAL_Drivers/drv_rtc.c
浏览文件 @
7fa4c90e
...
...
@@ -12,13 +12,6 @@
#ifdef BSP_USING_ONCHIP_RTC
#ifndef HAL_RTCEx_BKUPRead
#define HAL_RTCEx_BKUPRead(x1, x2) (~BKUP_REG_DATA)
#endif
#ifndef HAL_RTCEx_BKUPWrite
#define HAL_RTCEx_BKUPWrite(x1, x2, x3)
#endif
#ifndef RTC_BKP_DR1
#define RTC_BKP_DR1 RT_NULL
#endif
...
...
@@ -33,6 +26,16 @@ static struct rt_device rtc;
static
RTC_HandleTypeDef
RTC_Handler
;
RT_WEAK
uint32_t
HAL_RTCEx_BKUPRead
(
RTC_HandleTypeDef
*
hrtc
,
uint32_t
BackupRegister
)
{
return
(
~
BKUP_REG_DATA
);
}
RT_WEAK
void
HAL_RTCEx_BKUPWrite
(
RTC_HandleTypeDef
*
hrtc
,
uint32_t
BackupRegister
,
uint32_t
Data
)
{
return
;
}
static
time_t
get_rtc_timestamp
(
void
)
{
RTC_TimeTypeDef
RTC_TimeStruct
=
{
0
};
...
...
@@ -84,6 +87,15 @@ static rt_err_t set_rtc_time_stamp(time_t time_stamp)
LOG_D
(
"set rtc time."
);
HAL_RTCEx_BKUPWrite
(
&
RTC_Handler
,
RTC_BKP_DR1
,
BKUP_REG_DATA
);
#ifdef SOC_SERIES_STM32F1
/* F1 series does't save year/month/date datas. so keep those datas to bkp reg */
HAL_RTCEx_BKUPWrite
(
&
RTC_Handler
,
RTC_BKP_DR2
,
RTC_DateStruct
.
Year
);
HAL_RTCEx_BKUPWrite
(
&
RTC_Handler
,
RTC_BKP_DR3
,
RTC_DateStruct
.
Month
);
HAL_RTCEx_BKUPWrite
(
&
RTC_Handler
,
RTC_BKP_DR4
,
RTC_DateStruct
.
Date
);
HAL_RTCEx_BKUPWrite
(
&
RTC_Handler
,
RTC_BKP_DR5
,
RTC_DateStruct
.
WeekDay
);
#endif
return
RT_EOK
;
}
...
...
@@ -108,6 +120,36 @@ static void rt_rtc_init(void)
HAL_RCC_OscConfig
(
&
RCC_OscInitStruct
);
}
#ifdef SOC_SERIES_STM32F1
/* update RTC_BKP_DRx*/
static
void
rt_rtc_f1_bkp_update
(
void
)
{
RTC_DateTypeDef
RTC_DateStruct
=
{
0
};
HAL_PWR_EnableBkUpAccess
();
__HAL_RCC_BKP_CLK_ENABLE
();
RTC_DateStruct
.
Year
=
HAL_RTCEx_BKUPRead
(
&
RTC_Handler
,
RTC_BKP_DR2
);
RTC_DateStruct
.
Month
=
HAL_RTCEx_BKUPRead
(
&
RTC_Handler
,
RTC_BKP_DR3
);
RTC_DateStruct
.
Date
=
HAL_RTCEx_BKUPRead
(
&
RTC_Handler
,
RTC_BKP_DR4
);
RTC_DateStruct
.
WeekDay
=
HAL_RTCEx_BKUPRead
(
&
RTC_Handler
,
RTC_BKP_DR5
);
if
(
HAL_RTC_SetDate
(
&
RTC_Handler
,
&
RTC_DateStruct
,
RTC_FORMAT_BIN
)
!=
HAL_OK
)
{
Error_Handler
();
}
HAL_RTC_GetDate
(
&
RTC_Handler
,
&
RTC_DateStruct
,
RTC_FORMAT_BIN
);
if
(
HAL_RTCEx_BKUPRead
(
&
RTC_Handler
,
RTC_BKP_DR4
)
!=
RTC_DateStruct
.
Date
)
{
HAL_RTCEx_BKUPWrite
(
&
RTC_Handler
,
RTC_BKP_DR1
,
BKUP_REG_DATA
);
HAL_RTCEx_BKUPWrite
(
&
RTC_Handler
,
RTC_BKP_DR2
,
RTC_DateStruct
.
Year
);
HAL_RTCEx_BKUPWrite
(
&
RTC_Handler
,
RTC_BKP_DR3
,
RTC_DateStruct
.
Month
);
HAL_RTCEx_BKUPWrite
(
&
RTC_Handler
,
RTC_BKP_DR4
,
RTC_DateStruct
.
Date
);
HAL_RTCEx_BKUPWrite
(
&
RTC_Handler
,
RTC_BKP_DR5
,
RTC_DateStruct
.
WeekDay
);
}
}
#endif
static
rt_err_t
rt_rtc_config
(
struct
rt_device
*
dev
)
{
RCC_PeriphCLKInitTypeDef
PeriphClkInitStruct
=
{
0
};
...
...
@@ -167,6 +209,14 @@ static rt_err_t rt_rtc_config(struct rt_device *dev)
return
-
RT_ERROR
;
}
}
#ifdef SOC_SERIES_STM32F1
else
{
/* F1 series need update by bkp reg datas */
rt_rtc_f1_bkp_update
();
}
#endif
return
RT_EOK
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录