打印
[STM32F1]

STM32 RTC 突然加秒 问题

[复制链接]
2298|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 | 只看该作者
你不要观察寄存器数据,用个指示灯亮灭,看间隔准不准。软件观察不一定准

使用特权

评论回复
5
lo_529| | 2015-8-20 15:25 | 只看该作者
zhaoyu2005 发表于 2015-8-17 16:19
你不要观察寄存器数据,用个指示灯亮灭,看间隔准不准。软件观察不一定准 ...

应该就是这个点

使用特权

评论回复
6
冰河w| | 2015-8-28 21:25 | 只看该作者
这是什么问题

使用特权

评论回复
7
xia00| | 2015-8-29 16:10 | 只看该作者
用程序调试助手看看是不是程序有什么问题吧

使用特权

评论回复
8
玛尼玛尼哄| | 2015-8-29 16:39 | 只看该作者
调试时候,可以看寄存器的。

使用特权

评论回复
9
搞IT的| | 2015-8-30 21:56 | 只看该作者
哎,说实话,你这程序我看的迷糊糊的。。。

使用特权

评论回复
10
电子乌托邦|  楼主 | 2015-9-18 10:32 | 只看该作者
4l说的有理
软件观察欺骗了我。

使用特权

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

本版积分规则

140

主题

633

帖子

2

粉丝