許多的工業(yè)與消費類應(yīng)用中,越來越多的需要使用低功耗功能,使用定時喚醒,停機(jī)減低功耗。靈動微電子推出的MM32F0270系列,支持多種靈活的低功耗模式,還支持LPTIM和LPUART的外設(shè)。
本文介紹了如何使用 MM32F0270的LPTIM來實現(xiàn)定時1s從STOP方式的低功耗模式中喚醒。實現(xiàn)使用LPTIM1,在低功耗stop模式下定時1s,1s后將MM32F0270從stop模式喚醒,并且點亮LED燈。
01、MM32F0270 LPTIM的簡要介紹
LPTIM即低功耗定時器,得益于其定時器的低功耗。由于 LPTIM 的時鐘源具有多樣性,因此 LPTIM 能夠在所有電源模式(待機(jī)模式除外)下保持運(yùn)行狀態(tài)。
即使沒有內(nèi)部時鐘源, LPTIM 也能運(yùn)行,可將其用作“脈沖計數(shù)器”,這種脈沖計數(shù)器在一些特定的應(yīng)用中十分有用。
LPTIM 可以支持MCU從低功耗STOP模式喚醒,非常適合實現(xiàn)“超時功能”,而且功耗極低。
LPTIM是低功耗產(chǎn)品在低功耗功耗模式下定時的最佳選擇。
圖1 LPTIM的功能框圖
02、LPTIM 的功能特性
2.1 MM32的LPTIM具有以下特性:
16 位遞增計數(shù)器
3-bit 異步時鐘預(yù)分頻器,對應(yīng)的分頻系數(shù)分別為 1、2、4、8、16、32、64、128
時鐘源可選:
內(nèi)部時鐘源:LSI_CLK 和 PCLK
外部時鐘源:LSE_CLK
16-bit 比較寄存器和目標(biāo)值寄存器
觸發(fā)源可選:硬件觸發(fā)、軟件觸發(fā)
輸入極性可選
外部脈沖計數(shù)(無時鐘時)
低功耗超時喚醒功能
PWM 輸出
2.2 MM32F0270 LPTIM中斷
LPTIM 的中斷包括:外部觸發(fā)中斷,比較匹配中斷, 計數(shù)器溢出中斷, 當(dāng)相應(yīng)的中斷使能位打開,發(fā)生相應(yīng)的事件時,產(chǎn)生相應(yīng)的中斷。
需要使用喚醒時,需要使能相應(yīng)的中斷外,還需配置EXTI使能相關(guān)的功能。
相關(guān)的寄存器與控制狀態(tài)位的控制與查詢,可以參考用戶手冊。
03、LPTIM 從STOP模式喚醒的軟硬件設(shè)計
LPTIM是如何控制配置實現(xiàn)定時1s喚醒STOP 模式的呢?
3.1 在庫函數(shù)版本的樣例中可以通過如下順序初始化LPTIM
a. 使能LPTIM外設(shè)時鐘;
RCC_APB2PeriphClockCmd(RCC_APB2ENR_LPTIM1, ENABLE);
b. 配置LPTIM的LPTIM_TimeBaseInit_TypeDef結(jié)構(gòu)體中指定的參數(shù);
選擇時鐘源為LSE 32.768KHz;
選擇計數(shù)模式為連續(xù)計數(shù)模式;
時鐘分頻為DIV1;
LPTIM_TimeBaseStructInit( init_struct); //Setting LPTIM base init_struct.ClockSource = LPTIM_LSE_Source;//LPTIM_PCLK_Source;//LPTIM_LSI_Source;// init_struct.CountMode = LPTIM_CONTINUOUS_COUNT_Mode; init_struct.OutputMode = LPTIM_NORMAL_WAV_Mode; init_struct.Waveform = LPTIM_AdjustPwmOutput_Mode; init_struct.Polarity = LPTIM_Positive_Wave; init_struct.ClockDivision = LPTIM_CLK_DIV1;
c. 開啟LSE 32.768KHz的時鐘,等待穩(wěn)定;
if(init_struct.ClockSource == LPTIM_LSE_Source) { RCC_APB1PeriphClockCmd(RCC_APB1ENR_PWR | RCC_APB1ENR_BKP, ENABLE); //RCC->BDCR |= 1 << 24; PWR_BackupAccessCmd(ENABLE); RCC_LSEConfig(RCC_LSE_ON); DelayNop_Ms(1000); while(!RCC_GetFlagStatus(RCC_FLAG_LSERDY)); LPTIM_CLKConfig(LPTIM1, LPTIM_LSE_Source); }
d. 調(diào)用函數(shù)LPTIM_TimeBaseInit設(shè)置參數(shù)及比較器值與目標(biāo)值;
LPTIM_TimeBaseInit(LPTIM1, init_struct); LPTIM_SetCompare(LPTIM1, arr / 2 - 1); LPTIM_SetTarget(LPTIM1, arr);
在這設(shè)定結(jié)合時鐘源時鐘,分頻系數(shù)與Target值,得到定時1s的定時值。
e. 設(shè)定NVIC 參數(shù)與EXTI參數(shù);
void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; EXTI_DeInit(); //set EXTI as WFI EXTI_InitStructure.EXTI_Line = EXTI_Line23 ; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt ; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init( EXTI_InitStructure); EXTI_ClearITPendingBit(EXTI_Line23); NVIC_InitStructure.NVIC_IRQChannel = LPTIMER1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init( NVIC_InitStructure); }
f. 中斷相應(yīng)處理函數(shù)
void LPTIMER1_IRQHandler(void) { if(LPTIM_GetITStatus(LPTIM1, LPTIF_OVIF)) { LPTIM_ClearITPendingBit(LPTIM1, LPTIF_COMPIF | LPTIF_TRIGIF | LPTIF_OVIF); EXTI_ClearITPendingBit(EXTI_Line23); LPTIM_ITConfig(LPTIM1, LPTIE_COMPIE | LPTIE_TRIGIE | LPTIE_OVIE, DISABLE); } }
3.2 實現(xiàn)Demo功能的主要函數(shù)代碼:
void MCU_EnterSTOP_WFI(void) { PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI); } void LPTIM_Function_Demo(void) { int i; DelayNop_Init(); LPTIM1_Init(32768 - 1); NVIC_Configuration(); LED1_OFF(); LED1_TOGGLE(); LED1_TOGGLE(); for(i = 0; i < 10; i++) { __NOP();// DelayNop_Ms(2); LED1_TOGGLE(); } LED1_OFF(); LPTIM_ITConfig(LPTIM1, LPTIE_OVIE, ENABLE); for(i = 0; i < 10; i++) { __NOP();// DelayNop_Ms(1); LED2_TOGGLE(); } LED1_OFF(); MCU_EnterSTOP_WFI(); SystemInit(); while (1) { LED3_TOGGLE(); __NOP();// DelayNop_Ms(4); } }
配置好初始化LPTIM與LED閃燈的初始化操作后,執(zhí)行翻轉(zhuǎn)5次LED燈的操作;
進(jìn)入STOP 模式。
延時1S后,定時從STOP模式喚醒。
喚醒后繼續(xù)執(zhí)行LED閃燈程序。
通過上述的步驟,簡單的演示了MM32F0270的LPTIM 定時1s喚醒的功能。
下載MM32F0270 lib_Samples,工程路徑如下:
~ MM32F0270_SamplesLibSamplesLPTIM
來源:靈動MM32MCU
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理
審核編輯 黃宇
-
led
+關(guān)注
關(guān)注
240文章
23062瀏覽量
657061 -
mcu
+關(guān)注
關(guān)注
146文章
16885瀏覽量
349922 -
STOP模式
+關(guān)注
關(guān)注
0文章
9瀏覽量
3061
發(fā)布評論請先 登錄
相關(guān)推薦
評論