OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4123|回复: 1

求助,rtc使用lse卡死、不能运行

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2021-4-11
在线时间
2 小时
发表于 2022-8-21 20:44:39 | 显示全部楼层 |阅读模式
1金钱
第一次求救!感谢大佬们!使用LSE不能运行rtc!
芯片是f103c6t6,用cubem配置,开发板vbat只接了3.15V纽扣电池。如果使用内部晶振lsi,可以正常运行,但首次上电(拔下VBat重新插上)使用外部lse就会卡死,卡住后断开单片机的电源过一会重启不卡了可以运行,但rtc时钟不跑(用内部时钟lsi没有这个问题)。可以排除HAL_RTC_GetTime之后HAL_RTC_GetTime的问题。
cubemx 使能了lse,rtc,配置了lse的时钟树。rtc的output引脚PC13被用来点灯了,但我选择了no rtc output不知道有没有影响

rtc初始化代码如下:

void MX_RTC_Init(void)
{
    RTC_TimeTypeDef sTime = {0};
    RTC_DateTypeDef DateToUpdate = {0};
    hrtc.Instance = RTC;
    hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
    hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
    if (HAL_RTC_Init(&hrtc) != HAL_OK)
    {
        Error_Handler();
    }

    /* USER CODE BEGIN Check_RTC_BKUP */
    uint32_t iSetFlag = 0x5050;
    if (iSetFlag != HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR1))
    {
        /* USER CODE END Check_RTC_BKUP */

        sTime.Hours = 0x0;
        sTime.Minutes = 0x0;
        sTime.Seconds = 0x0;
        if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
        {
            Error_Handler();
        }
        DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;
        DateToUpdate.Month = RTC_MONTH_JANUARY;
        DateToUpdate.Date = 0x1;
        DateToUpdate.Year = 0x0;
        if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK)
        {
            Error_Handler();
        }
        /* USER CODE BEGIN RTC_Init 2 */
        HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR1, iSetFlag);
    }
    /* USER CODE END RTC_Init 2 */
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

163

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2021-12-14
在线时间
70 小时
发表于 2022-8-22 09:52:30 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 07:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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