野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14002|回复: 0

RTC初始化失败处理办法

[复制链接]
发表于 2020-6-4 20:20:49 | 显示全部楼层 |阅读模式
RTC使用时无法进行初始化,为什么?如何解决?
答;在HSI模式下,发现main.c中
                                                                                int main(void)
                                                                                {
                                                                                        ...
                                                                                        /* RTC配置:选择时钟源,设置RTC_CLK的分频系数 */
                                                                                  RTC_CLK_Config();

                                                                                  if (RTC_ReadBackupRegister(RTC_BKP_DRX) != RTC_BKP_DATA)//这里进不去
                                                                                  {
                                                                                    /* 设置时间和日期 */
                                                                                                RTC_TimeAndDate_Set();
                                                                                  }
                                                                                   else
                                                                                          {
                                                                       
                                                                                            /* 检查是否电源复位 */
                                                                                            if (RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET)
                                                                                            {
                                                                                              printf("\r\n 发生电源复位....\r\n");
                                                                                            }
                                                                                           ...
                应该改为:
                                                        /* RTC配置:选择时钟源,设置RTC_CLK的分频系数 */
                                                                                  RTC_CLK_Config();

                                                                                  if (RTC_ReadBackupRegister(RTC_BKP_DRX) != RTC_BKP_DATA)
                                                                                  {
                                                                                    /* 设置时间和日期 */
                                                                                                RTC_TimeAndDate_Set();
                                                                                  }
                                                                                   else
                                                                                          {
                                                                                                        RTC_TimeAndDate_Set();//加设置
                                                                                            /* 检查是否电源复位 */
                                                                                            if (RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET)
                                                                                            {
                                                                                              printf("\r\n 发生电源复位....\r\n");
                                                                                            }
                                                                                           ...
                                    或者if判断删除,直接执行
                                                                                    RTC_TimeAndDate_Set();//加设置
                                                                                            /* 检查是否电源复位 */
                                                                                            if (RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET)
                                                                                            {
                                                                                              printf("\r\n 发生电源复位....\r\n");
                                                                                            }
                                                                                           ...

在断电(电池扣掉再装上)后,可以进入if判断,抠电池太费劲,毕竟F429屏幕抠一下,核心板再抠一下,再扣电池,太麻烦,仁者见仁,我是这样处理,初始化成功了




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-19 17:32 , Processed in 0.055080 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表