麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

STM32L152 STOP模式

2019-11-10 19:24:20
字體:
來源:轉載
供稿:網友

目的

配置芯片進入停止模式,RTC喚醒中斷喚醒。

完成情況

成功進入停止模式4S,然后由RTC喚醒,ADC、日歷、串口等功能成功啟動。

步驟

1,進入低功耗模式相關配置

關閉高速時鐘; RCC中關閉所有外設時鐘; 關閉外設使能;

2,喚醒相關配置

要使能 RTC 喚醒中斷,需按照以下順序操作: 1. 將 EXTI 線 20 配置為中斷模式并將其使能,然后選擇上升沿有效。 2. 配置 NVIC 中的 RTC_WKUP IRQ 通道并將其使能。 3. 配置 RTC 以生成 RTC 喚醒定時器事件。

void RTC_configration(void){ NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; RTC_InitTypeDef RTC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); /*!< Allow access to RTC */ PWR_RTCAccessCmd(ENABLE); /* Clear WakeUp flag */ PWR_ClearFlag(PWR_FLAG_WU); /*!< Reset RTC Domain */ RCC_RTCResetCmd(ENABLE); RCC_RTCResetCmd(DISABLE); /*!< LSE Enable */ RCC_LSEConfig(RCC_LSE_ON); /*!< Wait till LSE is ready */ while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) {} /*!<RTC Clock Source Selection */ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); /*!< Enable the RTC Clock */ RCC_RTCCLKCmd(ENABLE); /*!< Wait for RTC APB registers synchronisation */ RTC_WaitForSynchro(); /* Calendar Configuration這里時假設RTC時鐘是32.768,如果不是,需要在system設置中更改 */ RTC_InitStructure.RTC_AsynchPRediv = 0x7F; RTC_InitStructure.RTC_SynchPrediv = 0x120; /* (37KHz / 128) - 1 = 0x120*/ RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24; RTC_Init(&RTC_InitStructure); /* Set the date: Wednesday January 17th 2017 */ RTC_DateStructure.RTC_Year =0x11; RTC_DateStructure.RTC_Month = RTC_Month_January; RTC_DateStructure.RTC_Date =0x13; RTC_DateStructure.RTC_WeekDay = RTC_Weekday_Tuesday; RTC_SetDate(RTC_Format_BIN, &RTC_DateStructure);//注意設置格式 /* Set the time to 01h 00mn 00s AM */ RTC_TimeStructure.RTC_H12 = RTC_H12_PM; RTC_TimeStructure.RTC_Hours = 0x0a; RTC_TimeStructure.RTC_Minutes = 0x15; RTC_TimeStructure.RTC_Seconds = 0x03; RTC_SetTime(RTC_Format_BIN, &RTC_TimeStructure); //注意設置格式 /* 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); /* RTC Wakeup Interrupt Generation: Clock Source: RTCDiv_16, Wakeup Time Base: 4s */ RTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits); RTC_SetWakeUpCounter(0x0004); /* Enable the Wakeup Interrupt */ RTC_ITConfig(RTC_IT_WUT, ENABLE); }

然后在需要進入停止模式的地方運行以下函數

void To_enter_Stop(void){GPIO_InitTypeDef GPIO_InitStructure; //1)關閉所有不用的外設及時鐘//2)設置IO /* Enable Wakeup Counter */ RTC_WakeUpCmd(ENABLE); /* Enter Stop Mode */ PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);}

3,管腳的配置

所有管腳設置為模擬輸入以降低功耗。 如果需要使能低功耗調試DEBUG,響應管腳保持原有設置。

4,使能低功耗模式下DEBUG

/Enable debug in stop mode/

DBGMCU_Config(DBGMCU_STOP,ENABLE);

RCC_AHBPeriphClockLPModeCmd(RCC_AHBPeriph_GPIOA,ENABLE);

5,退出低功耗模式配置

先配置時鐘,然后開啟GPIO,然后重新初始化相關外設。 注意:重新初始化之前Deinit一下,否則有的會重新配置 不成功。例如GPIO

void To_Exit_Stop(void){ RTC_WakeUpCmd(DISABLE); /* Enable HSI Clock */ RCC_HSICmd(ENABLE); /*!< Wait till HSI is ready */ while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); /* Enable 64-bit access */ Flash_ReadAccess64Cmd(ENABLE); /* Enable Prefetch Buffer */ FLASH_PrefetchBufferCmd(ENABLE); /* Flash 1 wait state */ FLASH_SetLatency(FLASH_Latency_1); RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); while (RCC_GetSYSCLKSource() != 0x04); RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 = HCLK */ RCC_PCLK1Config(RCC_HCLK_Div1); PWR_VoltageScalingConfig(PWR_VoltageScaling_Range1); /* Wait Until the Voltage Regulator is ready */ while (PWR_GetFlagStatus(PWR_FLAG_VOS) != RESET); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC | RCC_AHBPeriph_GPIOD | RCC_AHBPeriph_GPIOE | RCC_AHBPeriph_GPIOH | RCC_AHBPeriph_GPIOF | RCC_AHBPeriph_GPIOG, ENABLE); GPIO_DeInit(GPIOA); GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOC); GPIO_DeInit(GPIOD); GPIO_DeInit(GPIOE); GPIO_DeInit(GPIOF); GPIO_DeInit(GPIOG); GPIO_DeInit(GPIOH);}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美在线观看视频一区 | 看片一区二区三区 | 国产韩国精品一区二区三区久久 | 成码无人av片在线观看网站 | 激情久久一区二区 | 黄色特级一级片 | 国产一区二区精品91 | av免费在线观看国产 | 欧美黄色大片免费观看 | 粉色视频污 | 国产91av视频 | 在线91视频 | 精品一区二区电影 | 香蕉久久久久 | 操碰| 激情黄页 | 久久久久99一区二区三区 | 免费一级毛片电影 | 久久国产乱子伦精品 | 午夜在线观看视频网站 | av不卡毛片 | 亚洲免费视| 免费看成年人视频在线 | 成人激情在线 | 日本免费一区二区三区四区 | 一级毛片电影网 | 国产精品久久77777 | 欧美三级日本三级少妇99 | 91精品国产手机 | 精品国产专区 | 欧美囗交| 久久久国产精品免费观看 | 九九热精品视频在线播放 | 真人一级毛片免费 | 主播粉嫩国产在线精品 | 永久在线观看电影 | 91看片淫黄大片欧美看国产片 | 斗罗破苍穹在线观看免费完整观看 | 中文黄色一级片 | 中文区永久区 | 黄污网站在线观看 |