CH32V208WBU6的RTC的初始化耗时超过10s

CH32V208WBU6基于CH32V20xEVT\EVT\EXAM\BLE\Peripheral_ETH\APP,调用RTC_init()函数,会走到temp>=250的判断里,每次启动时都要多耗时10s~20s,请问这是什么问题?是否可以启动时缩短时间,或者第二次启动时缩短RTC_init()时间,目前我们硬件上是用单独的电池给内置rtc供电。



u8 RTC_Init(void)

{

    u8 temp = 0;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

    PWR_BackupAccessCmd(ENABLE);


    /* Is it the first configuration */


    BKP_DeInit();

    RCC_LSEConfig(RCC_LSE_ON);

    while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET && temp < 250)

    {

            temp++;

            Delay_Ms(20);

    }

    if(temp >= 250)

    {

        printf("In RTC_Init temp = %d\n", temp);  //==================>会走到这里

    return 1;

    }

    RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

    RCC_RTCCLKCmd(ENABLE);

    RTC_WaitForLastTask();

    RTC_WaitForSynchro();

    // RTC_ITConfig(RTC_IT_ALR, ENABLE);

    RTC_ITConfig(RTC_IT_SEC, ENABLE);

    RTC_WaitForLastTask();

    RTC_EnterConfigMode();

    RTC_SetPrescaler(32767);

    RTC_WaitForLastTask();

    printf("start RTC_Get year to decide if need to do RTC_Set\n");

    RTC_Get();

    printf("after RTC_Get year \n");

    if(calendar.w_year < 2023)

    {

    RTC_Set(2023, 10, 8, 13, 58, 55); /* Setup Time */

        printf("after RTC_Set if RTC_Get year < 2023 \n");

    }

    RTC_ExitConfigMode();

    BKP_WriteBackupRegister(BKP_DR1, 0XA1A1);


    RTC_NVIC_Config();

    RTC_Get();


    return 0;

}



您好,您是想要启用外部32k晶振提供RTC时钟吗,检查外部有没有接32k晶振,或者检查一下外部32k晶振的焊接有没有问题。


我们硬件上是“外部32k晶振提供RTC时钟”

,且我们有独立的电池确保DC断电后持续给VBAT引脚供电。请问代码要如何调试外部32K,需要基于CH32V20xEVT\EVT\EXAM\BLE\Peripheral_ETH\APP,解决RTC_init()函数初始化耗时10s~20s的问题。

个人信息保护,已隐藏

请帮忙发这个邮箱。谢谢!


已发送至邮箱,请查收。


请问这个工程里是否已经启用了外部32K晶振作为RTC的始终?

另外我把这个工程放到BLE目录下,CH32V20xEVT\EVT\EXAM\BLE\ch32v208_ble_uart_minimal_timestamp_test,但是编译不通过。

image.png


您添加一下邮件中的手机号联系,需要沟通更多信息。


只有登录才能回复,可以选择微信账号登录