zoukankan      html  css  js  c++  java
  • STM32 RTC上的唤醒和闹钟

    RTC很简单只要给备用电,RTC就会不停,可以进行设置和读时间。同时在RTC上也涉及了闹钟(EXTI_17:RTC_FLAG_ALRAF,相当于RTC的定时器,闹钟到了之后进行异步操作)和唤醒中断(低功耗模式下的操作EXTI_22:RTC_IT_WUT)。

    如果PA0上有开关信号唤醒EXIT_Line0,同时也有RTC的唤醒中断EXTI_22需要清除2个中断标记RTC_IT_WUT和EXTI_Line20。

    void RTC_WKUP_IRQHandler(void)
    {  

      if(RTC_GetITStatus(RTC_IT_WUT) != RESET)
      {
        RTC_ClearITPendingBit(RTC_IT_WUT);
      }
      EXTI_ClearITPendingBit(EXTI_Line20);

    }

    void EXTI0_IRQHandler(void) //中断0 唤醒 ;
    {
      EXTI_ClearITPendingBit(EXTI_Line0);
    }

    https://blog.csdn.net/licent9420/article/details/79828381

    int main()

    {

        DelayInit();    //延时初始化

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR时钟

        if(PWR_GetFlagStatus(PWR_FLAG_SB))  //从待机模式唤醒,清除相应标志位 

        {

            PWR_ClearFlag(PWR_FLAG_SB);

            PWR_ClearFlag(PWR_FLAG_WU);

        }

        OLED_Init();

        RtcInit(); 

        while(1)    {

            OLED_8x16StrP(0,0,"Runing...");         //液晶提示在运行中

            DelayS(2);                              //延时2秒

            RtcWakeUpConfig();                      //RTC wakeup 配置:间隔500ms自动唤醒

    //      PWR_WakeUpPinCmd(PWR_WakeUpPin_1,ENABLE);  //Periodic auto-wakeup不需要外部唤醒管脚,故不需要这句,唤醒可以通过RTC或外部唤醒引脚PA0唤醒。因此唤醒时要区别是何种方式唤醒。

            PWR_EnterSTANDBYMode();   //进入待机(STANDBY)模式     

        }

    }

  • 相关阅读:
    【分享】你敢来挑战?程序员等级
    [css]我要用css画幅画(二)
    [css]我要用css画幅画(一)
    关于学习javascript的一些建议
    孩子们眼中的世界
    全职妈妈再就业辅助计划
    程序员如何打扫卫生并向老婆汇报
    《夏洛特烦恼》观后感
    软件开发之: 做“工程”还是做“艺术品”
    2014年年度总结
  • 原文地址:https://www.cnblogs.com/jieruishu/p/10863345.html
Copyright © 2011-2022 走看看