打印

STM32 RTC 闹钟1秒唤醒的问题,代码见内,谢谢

[复制链接]
13600|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
winter1999|  楼主 | 2010-12-21 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 winter1999 于 2010-12-21 15:29 编辑

如题,我做低功耗,按键唤醒和RTC唤醒共用。

我用RTC 闹钟3秒没问题,时间准。设置1秒唤醒的时候就出问题了,唤醒时间变成了2秒钟,而我必须要用1秒,怎么办呢?不进入低功耗也是准的。

另外,我进入低功耗STOP模式后,按键唤醒就很迟钝,不知道为什么

谢谢。代码如下:
void
Set_STOP_MODE(void)//进入STOP模式
{


RTC_ClearFlag(RTC_FLAG_SEC);

while (RTC_GetFlagStatus(RTC_FLAG_SEC) ==
RESET);



RTC_SetAlarm(RTC_GetCounter()+1);

RTC_WaitForLastTask();

PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);


}
//唤醒后执行

RCC_Configuration();

RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP
|
RCC_APB1Periph_PWR,ENABLE);

沙发
winter1999|  楼主 | 2010-12-21 13:29 | 只看该作者
//alt 中断
void RTCAlarm_IRQHandler(void)
{
        if (RTC_GetITStatus(RTC_IT_ALR) != RESET)
        {
        // 清EXTI_Line17挂起位
        EXTI_ClearITPendingBit(EXTI_Line17);
        // 检查唤醒标志是否设置
        if(PWR_GetFlagStatus(PWR_FLAG_WU) != RESET)
        {
            // 清除唤醒标志
            PWR_ClearFlag(PWR_FLAG_WU);
        }
        RTC_WaitForLastTask();
        // 清RTC报警中断挂起
        RTC_ClearITPendingBit(RTC_IT_ALR);
        RTC_WaitForLastTask();
    }
}

使用特权

评论回复
板凳
winter1999|  楼主 | 2010-12-21 13:30 | 只看该作者
RTC_SetAlarm(RTC_GetCounter()+1);

这个改成加3,5都是对的,就是+1的时候是2秒钟而不是1秒,怎么回事呢?

使用特权

评论回复
地板
winter1999|  楼主 | 2010-12-21 15:26 | 只看该作者
呼唤各位高人出手帮忙啊,谢谢!

使用特权

评论回复
5
IJK| | 2010-12-21 15:50 | 只看该作者
RTC_SetAlarm(RTC_GetCounter()+1);

这个改成加3,5都是对的,就是+1的时候是2秒钟而不是1秒,怎么回事呢?
winter1999 发表于 2010-12-21 13:30


或许 加3,或加5  也不见得是非常精确的 3秒钟、5秒钟

使用特权

评论回复
6
winter1999|  楼主 | 2010-12-21 16:02 | 只看该作者
感谢5楼回复,怎么办呢

使用特权

评论回复
7
winter1999|  楼主 | 2010-12-22 13:05 | 只看该作者
继续呼叫

使用特权

评论回复
8
jonassong| | 2013-1-22 18:31 | 只看该作者
我也用闹钟唤醒休眠过,你设为
RTC_SetAlarm(RTC_GetCounter());
就是一秒闹一次,很准的,原因是 手册里有说“在计数器的值到达闹钟寄存器的值加1(RTC_ALR+1) 之前的RTC时钟周期中,设置RTC_Alarm
和RTC闹钟标志(ALRF)。对RTC闹钟的写操作必须使用下述过程之一与RTC秒标志同步”。

因为RTC跟AHB的速度不同,可读寄存器只在与RTC APB1 时钟进行重新同步的RTC时钟的上升沿被更新。RTC标志也是如此的。

使用特权

评论回复
9
carbonxie| | 2015-3-24 14:54 | 只看该作者
你是怎么初始化闹钟模式的?

使用特权

评论回复
10
zkppp| | 2015-3-30 10:55 | 只看该作者
carbonxie 发表于 2015-3-24 14:54
你是怎么初始化闹钟模式的?

我也想知道,我的闹钟初始化模式也有问题

使用特权

评论回复
11
周董| | 2015-3-30 11:01 | 只看该作者
初始化啊

使用特权

评论回复
12
vigous1| | 2015-3-30 11:15 | 只看该作者
闹钟初始化模式有什么问题呢

使用特权

评论回复
13
lovecat2015| | 2015-3-30 16:25 | 只看该作者
winter1999 发表于 2010-12-21 13:29
//alt 中断
void RTCAlarm_IRQHandler(void)
{

可能是初始化设置那给弄错了

使用特权

评论回复
14
wdh302| | 2015-7-16 10:39 | 只看该作者
低功耗standby模式下   按键唤醒和RTC唤醒共用可以吗?

使用特权

评论回复
15
hwh123| | 2015-7-16 12:36 | 只看该作者
会不会是你的RTC初始化有问题呢。

使用特权

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

本版积分规则

37

主题

136

帖子

2

粉丝