打印
[RISC-V MCU 应用开发]

CH32F103之RTC(使用内部40K振荡器)测试

[复制链接]
361|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lmn2005|  楼主 | 2023-5-11 13:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lmn2005 于 2023-5-11 13:57 编辑

本人手头的CH32F103开发板,外部低速晶振可能是失效的。下载官方的RTC例程后,打印的时间均为0,所以想启用内部低速40K RC振荡器,有意测试一下RTC的功能是否正常。不料屡试不成,问题就是,设置一次,只能当次正常,重启后就会卡在RTC初始化中的 RTC_WaitForSynchro();。今天,通过分析,估计在RTC初始化时,如果测试到非首次启用RTC,就直接运行
        RTC_WaitForSynchro();
        RTC_ITConfig(RTC_IT_SEC, ENABLE);
        RTC_WaitForLastTask();
有问题。
于是补上
        RCC_LSICmd(ENABLE);
        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
        RCC_RTCCLKCmd(ENABLE);
结果正常。具体的RTC初始化代码如下:
u8 RTC_Init(void)
{

    u8 temp = 0;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
    PWR_BackupAccessCmd(ENABLE);                           //使能后备寄存器访问

    if (BKP_ReadBackupRegister(BKP_DR1) != 0xA1A2)
    {
        BKP_DeInit();                           //复位备份区域
        RCC_LSICmd(ENABLE);
        while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET && temp <250)
        {
            temp++;
            Delay_Ms(20);
        }
        if (temp >= 250)
            return 1;

        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
        RCC_RTCCLKCmd(ENABLE);
        RTC_WaitForLastTask();
        RTC_WaitForSynchro();
        //      RTC_ITConfig(RTC_IT_ALR, ENABLE);
        RTC_ITConfig(RTC_IT_SEC, ENABLE);                           //使能RTC秒中断
        RTC_WaitForLastTask();
        RTC_EnterConfigMode();
        RTC_SetPrescaler(32767);
        RTC_WaitForLastTask();
        RTC_Set(2019, 10, 8, 13, 58, 55); /* Setup Time */
        RTC_ExitConfigMode();
        BKP_WriteBackupRegister(BKP_DR1, 0XA1A2);

    } else
    {
        RCC_LSICmd(ENABLE);//
        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//
        RCC_RTCCLKCmd(ENABLE);//这三行是今天才添加的
        RTC_WaitForSynchro();
        RTC_ITConfig(RTC_IT_SEC, ENABLE);
        RTC_WaitForLastTask();
    }
    RTC_NVIC_Config();                           //RCT中断分组设置
    RTC_Get();                           //更新时间

    return 0;
}


完整的工程:

RTC测试(使用内置40K振荡器).rar

523.26 KB

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

485

帖子

1

粉丝