[STM32F1] STM32 RTC 突然加秒 问题

[复制链接]
3023|9
 楼主| 电子乌托邦 发表于 2015-8-17 13:04 | 显示全部楼层 |阅读模式
搜遍全互联网也没发现有我这种问题的。可能是程序哪里有问题。
现象描述:
STM32 RTC时钟,用的是外部32.768晶振,配置的1秒中断,MDK 4.60
配置完后运行,
用MDK观察RTC->CNTL,RTC->CNTH(RTC计数器)寄存器会过几秒迅速跳动到下一秒。
举例:
....7,8,9,10,11,12,13....
10,跟11之间的间隔很短,其它数之间间隔约1秒。运行10个左右的数就会突然快速变化一秒
有没有大神碰到过这个问题。。
贴代码
static void RTC_Config(void)
{
    uint8_t cnt;
        // 开启电源管理,备份时钟;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
        PWR_BackupAccessCmd(ENABLE);// 使能备份通道;
        BKP_DeInit();               // Reset Backup Domain
        RCC_LSEConfig(RCC_LSE_ON);  // 开启外部低速时钟32.768KHz
        cnt = 0;
        // Wait till LSE is ready
        while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
        {
        if((cnt++)>10){
            break;
        }else{
            Delay_ms_SysTick(2);
        }
    }
       
    if(cnt>=10){
        // 使用外部高速晶振 128分频  
        RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);   
        // 标记RTC故障;
    }else{
        /* Select LSE as RTC Clock Source */
        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
    }
        RCC_RTCCLKCmd(ENABLE);        // 使能RTC时钟
        RTC_WaitForSynchro();        // 等RTC时钟同步
        RTC_WaitForLastTask();  // 等RTC完成;
        //允许RTC秒中断
        RTC_ITConfig(RTC_IT_SEC, ENABLE);
        RTC_WaitForLastTask();  // 等RTC完成;
        //  设置预分频值;
    if(cnt<10){
        /* Set RTC prescaler: set RTC period to 1sec */
        RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) = 1HZ */
    }else{
        RTC_SetPrescaler(62499); //25000000 / 128 = 195312.5,如果是8M / 128 = 62500,则这里应该填为62499  
    }
        RTC_WaitForLastTask();  // 等RTC完成;
}


mmuuss586 发表于 2015-8-17 13:44 | 显示全部楼层

这只能自己查程序了;
先找下规律,大概多少时间跳;
dirtwillfly 发表于 2015-8-17 14:36 | 显示全部楼层
[em:2:没遇到过
zhaoyu2005 发表于 2015-8-17 16:19 | 显示全部楼层
你不要观察寄存器数据,用个指示灯亮灭,看间隔准不准。软件观察不一定准
lo_529 发表于 2015-8-20 15:25 | 显示全部楼层
zhaoyu2005 发表于 2015-8-17 16:19
你不要观察寄存器数据,用个指示灯亮灭,看间隔准不准。软件观察不一定准 ...

应该就是这个点
冰河w 发表于 2015-8-28 21:25 | 显示全部楼层
这是什么问题
xia00 发表于 2015-8-29 16:10 来自手机 | 显示全部楼层
用程序调试助手看看是不是程序有什么问题吧
玛尼玛尼哄 发表于 2015-8-29 16:39 | 显示全部楼层
调试时候,可以看寄存器的。
搞IT的 发表于 2015-8-30 21:56 来自手机 | 显示全部楼层
哎,说实话,你这程序我看的迷糊糊的。。。
 楼主| 电子乌托邦 发表于 2015-9-18 10:32 | 显示全部楼层
4l说的有理
软件观察欺骗了我。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

140

主题

633

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部