色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32之RTC鬧鐘喚醒停機模式

          STM32之RTC鬧鐘喚醒停機模式

          作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
          費了九牛二虎之力,終于搞出來這個RTC鬧鐘喚醒停機模式了,發(fā)現(xiàn)有以下幾點:
          1,停機模式下秒中斷不能用;
          2,每次鬧鐘中斷后,要重新賦值,否則不會再進中斷;
          3,網(wǎng)上很多關(guān)于鬧鐘叫醒休眠模式的例程,后來發(fā)現(xiàn),使能的都是秒中斷,不是鬧鐘中斷,根本不行;
          4,發(fā)現(xiàn)鬧鐘中斷使能后,如果使能了秒中斷,則秒中斷標志會置位:
          void RTCAlarm_IRQHandler()//RTC_IRQHandler(void)
          {
          feed_dog();
          if(RTC_GetITStatus(RTC_IT_SEC)!= RESET)
          {
          // g_bRTCAlarm = 1;
          feed_dog();
          RTC_ClearITPendingBit(RTC_IT_SEC);
          RTC_WaitForLastTask();
          }
          if(RTC_GetITStatus(RTC_IT_ALR) != RESET)
          {
          g_bRTCAlarm = 1;
          EXTI_ClearITPendingBit(EXTI_Line17);
          if(PWR_GetFlagStatus(PWR_FLAG_WU) != RESET)
          {
          PWR_ClearFlag(PWR_FLAG_WU);
          }
          RTC_WaitForLastTask();
          RTC_ClearITPendingBit(RTC_IT_ALR);
          RTC_WaitForLastTask();
          }
          }
          //void RTC_IRQHandler()//RTC_IRQHandler(void)
          //{
          // if(RTC_GetITStatus(RTC_IT_SEC) != RESET)
          // {
          //
          //// g_bRTCAlarm = 1;
          // feed_dog();
          //
          // RTC_ClearITPendingBit(RTC_IT_SEC);
          //
          // RTC_WaitForLastTask();
          // }
          //}
          如果打開下面函數(shù):
          // NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;
          // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
          // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
          // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
          // NVIC_Init(&NVIC_InitStructure);
          則秒中斷就會進來;
          還有,通過上面這個NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;我才剛認識到他就是傳遞中斷向量地址的。


          關(guān)鍵詞: STM32RTC鬧鐘喚醒停機模

          評論


          技術(shù)專區(qū)

          關(guān)閉