OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2510|回复: 1

RTC周期性唤醒问题

[复制链接]

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
发表于 2018-5-3 10:26:06 | 显示全部楼层 |阅读模式
1金钱
我再做一个心跳中断,RTC实现32ms一次中断,在参考例程之后有一个问题不了解,就是在配置RTC中断的时候为什么还要配置EXTI中断,时间到了不就直接执行中断服务函数了么
[mw_shl_code=c,true]static void RTC_Config(void)
{

    NVIC_InitTypeDef NVIC_InitStructure;
    EXTI_InitTypeDef EXTI_InitStructure;
          RTC_InitTypeDef  RTC_InitStructure;
    /* Enable the PWR clock */
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR , ENABLE);
          //RTC ê±ÖóÔ′ÅäÖà ѡÔñLSE
    RTC_Configuration();

    /* Calendar Configuration */
    RTC_InitStructure.RTC_AsynchPrediv = 127;//0x7F;
    RTC_InitStructure.RTC_SynchPrediv   = 255; //0x120; /* (37KHz / 128) - 1 = 0x120*/
    RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
    if(RTC_Init(&RTC_InitStructure) == ERROR)
    {
        printf("Rtc_Init failed\r\n");
    }      
    RTC_CalibOutputCmd(DISABLE);
               
               

    /* EXTI configuration *******************************************************/
    EXTI_ClearITPendingBit(EXTI_Line20);
    EXTI_InitStructure.EXTI_Line = EXTI_Line20;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);
     
    /* Enable the RTC Wakeup Interrupt */
    NVIC_InitStructure.NVIC_IRQChannel = RTC_WKUP_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);  
               
                //ê×ÏèÅäÖÃWAKEUP·ÖÆμÏμêy֮ǰDèòa1رÕRTC_WAKEUPμÄê±Öó
                // The WakeUp Clock source can only be changed when the RTC WakeUp
    // is disabled (Use the RTC_WakeUpCmd(DISABLE))
               
    RTC_WakeUpCmd(DISABLE);
    /* Configure the RTC WakeUp Clock source: CK_SPRE (1Hz) */
    RTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits);
    RTC_SetWakeUpCounter(0x0);   
    /* Enable the RTC Wakeup Interrupt */
    RTC_ITConfig(RTC_IT_WUT, ENABLE);     
    /* Enable Wakeup Counter */
    RTC_WakeUpCmd(ENABLE);
}




//RTC WAKE UPÖD¶Ï·tÎñoˉêy
void RTC_WKUP_IRQHandler(void)
{   
        if(RTC_GetFlagStatus(RTC_FLAG_WUTF)==SET)//WK_UPÖD¶Ï?
        {
                RTC_ClearFlag(RTC_FLAG_WUTF);        //Çå3yÖD¶Ï±êÖ¾
                //LED1=!LED1;
        }   
        EXTI_ClearITPendingBit(EXTI_Line22);//Çå3yÖD¶ÏÏß22μÄÖD¶Ï±êÖ¾                                                                
}[/mw_shl_code]
我查了一些资料说了WAKE_UP唤醒键,有人可以解释一波么

最佳答案

查看完整内容[请看2#楼]

找到原因了,数据手册没认真看,给自己二巴掌
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-5-3 10:26:07 | 显示全部楼层
找到原因了,数据手册没认真看,给自己二巴掌
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 13:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表