新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32L151定時從Stop模式定時喚醒

        STM32L151定時從Stop模式定時喚醒

        作者: 時間:2016-11-13 來源:網絡 收藏

        void StopRTCLSIMode(int count)

        本文引用地址:http://www.104case.com/article/201611/316445.htm

        {

        EXTI_InitTypeDef EXTI_InitStructure;

        PWR_RTCAccessCmd(ENABLE);//Allow access to RTC

        RCC_LSICmd(ENABLE);//LSI Enable

        while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)==RESET);//wait till LSI is ready

        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//RTC Clock Source Selection

        RCC_RTCCLKCmd(ENABLE);//Enable RTC clock

        RTC_WaitForSynchro();//wait for RTC APB registers synchronisation

        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);

        RTC_WakeUpCmd(DISABLE);//禁止喚醒計數器

        RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);//喚醒時鐘16分頻

        RTC_SetWakeUpCounter(count);//設置喚醒計數器

        RTC_ITConfig(RTC_IT_WUT,EBANLE);//使能喚醒中斷

        RTC_WakeUpCmd(ENABLE);//使能喚醒計數器

        }

        //喚醒中斷

        void RTC_WKUP_IRQHandler(void)

        {

        if(RTC_GetITStatus(RTC_IT_WUT)!=RESET)

        {

        RTC_ClearITPendingBit(RTC_IT_WUT);

        EXTI_ClearITPendingBit(EXTI_Line20);

        Systeminit();

        StopRTCLSIMode(2312)//~1S 再次初始化定時喚醒時間

        //重新初始化外設

        isWKUP = 1;

        }

        }

        在主函數中

        int main(void)

        {

        //TO DO

        //1.初始化定時喚醒

        //2.進入低功耗模式

        while(1)

        {

        if(isWKUP)

        {

        isWKUP = 0;

        //TO DO 喚醒后干一些事情

        StopRTCLSIMode(2312)//~1S 再次初始化定時喚醒時間

        //進入低功耗模式

        }

        }

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 鄂伦春自治旗| 山东| 信阳市| 清流县| 拉孜县| 维西| 镇沅| 大埔区| 芦溪县| 绥阳县| 广德县| 田阳县| 富顺县| 县级市| 淮南市| 安远县| 黄浦区| 平阳县| 和龙市| 勃利县| 沧州市| 高陵县| 会东县| 永修县| 石景山区| 尼玛县| 平和县| 玛纳斯县| 常宁市| 拜城县| 东山县| 扶绥县| 饶河县| 西城区| 新乡县| 阳东县| 遵义市| 犍为县| 错那县| 舟曲县| 阳高县|