chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用MM32F0270 LPTIM從STOP模式喚醒

jf_pJlTbmA9 ? 來源:靈動MM32MCU ? 作者:靈動MM32MCU ? 2023-10-26 16:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

許多的工業(yè)與消費類應用中,越來越多的需要使用低功耗功能,使用定時喚醒,停機減低功耗。靈動微電子推出的MM32F0270系列,支持多種靈活的低功耗模式,還支持LPTIM和LPUART的外設。

本文介紹了如何使用 MM32F0270的LPTIM來實現(xiàn)定時1s從STOP方式的低功耗模式中喚醒。實現(xiàn)使用LPTIM1,在低功耗stop模式下定時1s,1s后將MM32F0270從stop模式喚醒,并且點亮LED燈。

01、MM32F0270 LPTIM的簡要介紹

LPTIM即低功耗定時器,得益于其定時器的低功耗。由于 LPTIM 的時鐘源具有多樣性,因此 LPTIM 能夠在所有電源模式(待機模式除外)下保持運行狀態(tài)。

即使沒有內(nèi)部時鐘源, LPTIM 也能運行,可將其用作“脈沖計數(shù)器”,這種脈沖計數(shù)器在一些特定的應用中十分有用。

LPTIM 可以支持MCU從低功耗STOP模式喚醒,非常適合實現(xiàn)“超時功能”,而且功耗極低。

LPTIM是低功耗產(chǎn)品在低功耗功耗模式下定時的最佳選擇。

wKgaomUD8YOASwPfAADJeldp6F0450.png 圖1 LPTIM的功能框圖

02、LPTIM 的功能特性

2.1 MM32的LPTIM具有以下特性:

16 位遞增計數(shù)器

3-bit 異步時鐘預分頻器,對應的分頻系數(shù)分別為 1、2、4、8、16、32、64、128

時鐘源可選:

內(nèi)部時鐘源:LSI_CLK 和 PCLK

外部時鐘源:LSE_CLK

16-bit 比較寄存器和目標值寄存器

觸發(fā)源可選:硬件觸發(fā)、軟件觸發(fā)

輸入極性可選

外部脈沖計數(shù)(無時鐘時)

低功耗超時喚醒功能

PWM 輸出

2.2 MM32F0270 LPTIM中斷

LPTIM 的中斷包括:外部觸發(fā)中斷,比較匹配中斷, 計數(shù)器溢出中斷, 當相應的中斷使能位打開,發(fā)生相應的事件時,產(chǎn)生相應的中斷。

需要使用喚醒時,需要使能相應的中斷外,還需配置EXTI使能相關(guān)的功能。

相關(guān)的寄存器與控制狀態(tài)位的控制與查詢,可以參考用戶手冊。

03、LPTIM 從STOP模式喚醒的軟硬件設計

LPTIM是如何控制配置實現(xiàn)定時1s喚醒STOP 模式的呢?

3.1 在庫函數(shù)版本的樣例中可以通過如下順序初始化LPTIM

a. 使能LPTIM外設時鐘;

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ù)及比較器值與目標值;

LPTIM_TimeBaseInit(LPTIM1,  init_struct);
    LPTIM_SetCompare(LPTIM1, arr / 2 - 1);
    LPTIM_SetTarget(LPTIM1, arr);

在這設定結(jié)合時鐘源時鐘,分頻系數(shù)與Target值,得到定時1s的定時值。

e. 設定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. 中斷相應處理函數(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燈的操作;

進入STOP 模式。

延時1S后,定時從STOP模式喚醒。

喚醒后繼續(xù)執(zhí)行LED閃燈程序。

wKgZomUD8YWAFeu8AACLvgglodw900.png

通過上述的步驟,簡單的演示了MM32F0270的LPTIM 定時1s喚醒的功能。

下載MM32F0270 lib_Samples,工程路徑如下:

~ MM32F0270_SamplesLibSamplesLPTIM

來源:靈動MM32MCU
免責聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    244

    文章

    24724

    瀏覽量

    692514
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    19128

    瀏覽量

    403973
  • STOP模式
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    3350
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    CW32L083低功耗項目休眠后無法喚醒怎么解決?

    配置STOP模式后GPIO中斷喚醒失效,RTC鬧鐘喚醒倒是正常,電路設計遵循了手冊建議,求排查思路...
    發(fā)表于 11-21 07:47

    CW32L010DeepSleep模式喚醒后時鐘啟動不穩(wěn)定什么原因?

    CW32L010DeepSleep模式喚醒后時鐘啟動不穩(wěn)定什么原因?
    發(fā)表于 11-18 06:24

    AT32F系列 PWC待機喚醒喚醒Standby

    、WDT復位均能將Standby模式喚醒。 注:本應用筆記對應的代碼是基于雅特力提供的V2.x.x 板級支持包(BSP)而開發(fā),對于其他版本BSP,需要注意使用上的區(qū)別。 支持型號: AT32F
    發(fā)表于 11-05 14:08

    AT32F系列 PWC USART接收喚醒SLEEP

    AT32F系列 PWC USART接收喚醒SLEEP 示例目的演示AT32F系列 PWC USART接收喚醒SLEEP的使用方法。通常任意一個被嵌套向量中斷控制器響應的外設中斷都能
    發(fā)表于 11-05 14:06

    V5.1.0版本,啟用PM組件后進入stop模式無法正常喚醒怎么解決?

    正常的drv_pm.c低功耗代碼出錯了,進入stop模式后,就無法被軟定時器喚醒,經(jīng)過檢查,pm.c在進入低功耗模式前會選擇計算下一個定時器的超時時間,然后設置lptimer,但我調(diào)試
    發(fā)表于 09-10 08:14

    請問是否可以將所有 GPIO 設置為斷電或空閑模式喚醒系統(tǒng)?

    是否可以將所有 GPIO 設置為斷電或空閑模式喚醒系統(tǒng)?
    發(fā)表于 08-28 06:00

    是否可以將所有 GPIO 設置為斷電或空閑模式喚醒系統(tǒng)?

    是否可以將所有 GPIO 設置為斷電或空閑模式喚醒系統(tǒng)?
    發(fā)表于 08-25 06:55

    求助,關(guān)于STM32F030進入Stop模式后RTC喚醒問題求解

    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI)進入STOP模式正常,但是RTC喚醒后第二次調(diào)用HAL_PWR_EnterSTOPMode函數(shù)發(fā)
    發(fā)表于 07-23 06:59

    STM32L152進入STOP模式,WAKEUP by RTC喚醒后ADC讀取數(shù)值不變了是什么原因?qū)е碌模?/a>

    ),進入STOP,RTC喚醒后讀出來的ADC沒有變化(依然是4.10V)。以前沒有進入STOP模式,連續(xù)讀取是OK的。 請問大蝦,這大概是什么問題?
    發(fā)表于 07-23 06:09

    STM32L433VCT6進入STOP模式2之后,功耗依然和正常運行模式沒有差別,為什么?

    STM32CubeMX上配置power savinf mode 2、系統(tǒng)電源供電時LDO 結(jié)果: 1、運行是10mA,進入STOP模式時是9.9mA; 2、掛仿真,沒有任何喚醒的中斷產(chǎn)生,應該是進入
    發(fā)表于 07-21 06:42

    求助,關(guān)于TLE9893 stop模式喚醒問題求解

    我正在使用 TLE9893 的STOP模式以降低功耗,靠外部電平信號喚醒,希望2ms內(nèi)能轉(zhuǎn)到Active模式,然后接收外部數(shù)據(jù)。我嘗試了兩種方案,好像都不正常。 一種是用P2端口下降沿
    發(fā)表于 07-14 07:39

    請問 CYW20829 深度睡眠模式是否可以通過遠程 BLE 喚醒,還是必須主機喚醒

    請問 CYW20829 深度睡眠模式是否可以通過遠程 BLE 喚醒,還是必須主機喚醒? 謝謝!
    發(fā)表于 07-01 07:55

    普冉半導體超低功耗MCU PY32L020F15U6 代理供應

    ? 定時器— 1 個 16 位高級控制定時器 (TIM1)— 1 個通用的 16 位定時器 (TIM14)— 1 個低功耗定時器 (LPTIM),支持 stop 模式
    發(fā)表于 05-13 14:51

    XL32F001國產(chǎn)低成本單片機,24MHz主頻,24KB Flash,3KB RAM

    時電池電量較低也能運行。 XL32F001單片機主要優(yōu)勢: 一、低功耗與寬電壓 1.7-5.5V 寬電壓支持 :可直接使用紐扣電池(如 3V CR2032)或鋰電池供電,無需額外穩(wěn)壓。Stop 模式
    發(fā)表于 04-30 15:39

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發(fā)怎么解決?

    我使用的是STM32U585系列芯片,開啟了IWDG,并在運行模式下測試提前喚醒中斷正常觸發(fā),但在進入STOP2模式后,提前喚醒中斷無法觸發(fā)
    發(fā)表于 04-27 08:05