STM32Standby低功耗模式示例_第1頁
STM32Standby低功耗模式示例_第2頁
STM32Standby低功耗模式示例_第3頁
STM32Standby低功耗模式示例_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、STM32Standby1.基本流程1)初始化RTC2)配置外部中斷(不是必需的)3)設(shè)置Alarm時間4)進入Standby2.幾個需要注意的問題1)從Standby退出后,代碼將重新運行,相當(dāng)于執(zhí)行了軟復(fù)位。其實也容易理解,因為進入Standby后,內(nèi)核的所有功能都已經(jīng)停止(斷電),RAM內(nèi)的所有數(shù)據(jù)將消除,因此,從Standby退出后,需要重新執(zhí)行所有程序。2)如果有必要,可在進入Standby之前將重要數(shù)據(jù)存入BACKUPRAM或RTC的19個備份寄存器中,退出Standby時再將數(shù)據(jù)讀出。3)進入Standby后,如果Alarm事件發(fā)生,雖然可以退出Standby模式,但即使配置了外

2、部中斷,發(fā)系統(tǒng)也無法響應(yīng)外部中斷,因為,從Standby退出后發(fā)生了系統(tǒng)復(fù)位。4)雖然,導(dǎo)致系統(tǒng)從Standby退出的Alarm事件不能用于觸發(fā)外部中斷(注:僅僅是導(dǎo)致系統(tǒng)從Standby退出的那個特定事件不能觸發(fā)外部中斷,而系統(tǒng)正常運行后,Alarm事件還是可以正常觸發(fā)外部中斷的),但即使不需要Alarm觸發(fā)外部中斷的功能,也必須配置使能Alarm中斷,否則系統(tǒng)將無法從Standby退出。5)使能Alarm中斷之前,最好先清除中斷標(biāo)志位,否則在循環(huán)進入或推出Standby的操作就會失敗(原因有待研究)。3.示例代碼3.1.RTCstaticint32uDrvRtclnit(void)RTC_

3、InitTypeDefRTC_InitStructure;/*EnabletheLSIOSC*/RCC_LSICmd(ENABLE);/*WaittillLSIisready*/while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)=RESET);/*EnablethePWRclock*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);/*AllowaccesstoRTC*/PWR_BackupAccessCmd(ENABLE);/*SelecttheRTCClockSource*/RCC_RTCCLKConfig(

4、RCC_RTCCLKSource_LSI);/*EnabletheRTCClock*/RCC_RTCCLKCmd(ENABLE);/*CalendarConfigurationwithLSIsupposedat32KHz*/RTC_InitStructure.RTC_AsynchPrediv=0 x7F;RTC_InitStructure.RTC_SynchPrediv=0 xFF;/*(32KHz/128)-1=0 xFF*/RTC_InitStructure.RTC_HourFormat=RTC_HourFormat_24;RTC_Init(&RTC_InitStructure);RTC_

5、ClearITPendingBit(RTC_IT_ALRA);RTC_ITConfig(RTC_IT_ALRA,ENABLE);/*DisabletheRTCClock*/PWR_BackupAccessCmd(DISABLE);returnNCC_OK;3.2.配置外部中斷voidRTC_EXTI_INITIAL(FunctionalStatenewState)NVIC_InitTypeDefNVIC_InitStructure;EXTI_InitTypeDefEXTI_InitStructure;/EnableSYSCFGclockRCC_APB2PeriphClockCmd(RCC_AP

6、B2Periph_SYSCFG,ENABLE);/EXTI配置EXTI_InitStructure.EXTI_Line=EXTI_Line17;EXTIInitStructure.EXTILineCmd=newState;EXTI_lnitStructure.EXTI_Mode=EXTI_Modenterrupt;EXTI_lnitStructure.EXTI_Trigger=EXTI_Trigger_Rising;EXTI_Init(&EXTI_InitStructure);/設(shè)置中斷NVICnitStructure.NVIC_IRQChannel=RTC_AlarmRQn;/RTC_Ala

7、rmRQnRTC_WKUP_IRQnNVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=newState;NVIC_Init(&NVIC_InitStructure);/*外部中斷響應(yīng)函數(shù)*/voidRTC_AlarmRQHandler(void)if(SET=RTC_GetITStatus(RTC_IT_ALRA)RTC_ClearITPendingBit(RTC_

8、IT_ALRA);EXTI_ClearITPendingBit(EXTI_Line17);/DrvLedCmd(GPIO_Pin_3,bLedState);3.3.AlarmvoidRTC_SET_ALARM(uint8_tsec)RTC_TimeTypeDefRTC_TimeStructure;RTC_DateTypeDefRTC_DateStructure;RTC_AlarmTypeDefRTC_AlarmStructure;PWR_BackupAccessCmd(ENABLE);/FillseachRTC_TimeStructmemberwithitsdefaultvalueRTC_Ti

9、meStructInit(&RTC_TimeStructure);/FillseachRTC_DateStructmemberwithitsdefaultvalueRTC_DateStructInit(&RTC_DateStructure);/setrtctimeRTC_SetTime(RTC_Format_BCD,&RTC_TimeStructure);/setrtcdataRTCSetDate(RTCFormatBCD,&RTCDateStructure);/setalarmtimebyaddsomesecRTC_TimeStructure.RTC_Seconds+=sec;/Fillth

10、eRTC_AlarmStructureRTC_AlarmStructure.RTC_AlarmDateWeekDay=RTC_DateStructure.RTC_Date;RTC_AlarmStructure.RTC_AlarmDateWeekDaySel=RTC_AlarmDateWeekDaySel_Date;RTC_AlarmStructure.RTC_AlarmMask=RTC_AlarmMask_None;RTC_AlarmStructure.RTC_AlarmTime=RTC_TimeStructure;/DisablealarmAif(RTC_AlarmCmd(RTC_Alarm_A,DISABLE)=ERROR)return;/settheala

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論