在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

使用MM32F0270 LPTIM從STOP模式喚醒

jf_pJlTbmA9 ? 來源:靈動MM32MCU ? 作者:靈動MM32MCU ? 2023-10-26 16:46 ? 次閱讀

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

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

01、MM32F0270 LPTIM的簡要介紹

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

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

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

LPTIM是低功耗產品在低功耗功耗模式下定時的最佳選擇。

wKgaomUD8YOASwPfAADJeldp6F0450.png 圖1 LPTIM的功能框圖

02、LPTIM 的功能特性

2.1 MM32的LPTIM具有以下特性:

16 位遞增計數器

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

時鐘源可選:

內部時鐘源:LSI_CLK 和 PCLK

外部時鐘源:LSE_CLK

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

觸發源可選:硬件觸發、軟件觸發

輸入極性可選

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

低功耗超時喚醒功能

PWM 輸出

2.2 MM32F0270 LPTIM中斷

LPTIM 的中斷包括:外部觸發中斷,比較匹配中斷, 計數器溢出中斷, 當相應的中斷使能位打開,發生相應的事件時,產生相應的中斷。

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

相關的寄存器與控制狀態位的控制與查詢,可以參考用戶手冊。

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

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

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

a. 使能LPTIM外設時鐘;

RCC_APB2PeriphClockCmd(RCC_APB2ENR_LPTIM1, ENABLE);

b. 配置LPTIM的LPTIM_TimeBaseInit_TypeDef結構體中指定的參數;

選擇時鐘源為LSE 32.768KHz;

選擇計數模式為連續計數模式;

時鐘分頻為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的時鐘,等待穩定;

 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. 調用函數LPTIM_TimeBaseInit設置參數及比較器值與目標值;

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

在這設定結合時鐘源時鐘,分頻系數與Target值,得到定時1s的定時值。

e. 設定NVIC 參數與EXTI參數;

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. 中斷相應處理函數

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 實現Demo功能的主要函數代碼:

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閃燈的初始化操作后,執行翻轉5次LED燈的操作;

進入STOP 模式。

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

喚醒后繼續執行LED閃燈程序。

wKgZomUD8YWAFeu8AACLvgglodw900.png

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

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

~ MM32F0270_SamplesLibSamplesLPTIM

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

審核編輯 黃宇

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

    關注

    242

    文章

    23715

    瀏覽量

    671118
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17851

    瀏覽量

    360706
  • STOP模式
    +關注

    關注

    0

    文章

    9

    瀏覽量

    3177
收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

    XL32F001國產低成本單片機,24MHz主頻,24KB Flash,3KB RAM

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

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

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

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

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

    STM32U031C8T6低功耗電流STOP2模式下電流240微安,怎么解決?

    ,使用LPTIM1輸出PWM,在在STOP2模式下,LED燈關閉情況下,電流測出來居然有240ua左右,這個什么情況,誰有demo程序,讓測下電流到底有多少,是我程序有問題還是片子有問題,電流太大了。 程序也是
    發表于 04-23 06:11

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

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

    STM32F072無法清除EXTI4_15_IRQn pending標志,導致無法進入stop模式,怎么解決?

    開發環境:STM32F072RBT6+stm32cubemx+freertos 問題描述: 1。 開始發現進入STOP模式失敗,在調用HAL_PWR_EnterSTOPMode前通過發現
    發表于 03-13 07:56

    STM32U5退出stop2模式后進入HardFault_Handler如何解決?

    主循環每兩秒修改stopFlag為1,進入stop2模式,外部中斷(lis2ds12的6d檢測)喚醒并修改stopFlag為0; 不連接stlink時,退出stop2后就會進入
    發表于 03-13 06:12

    stm32進入stop模式,無法被WKUP引腳喚醒是怎么回事?

    END 3 */}這是我的main()函數。當進入stop模式按道理應該是已經關閉了systick的,但是根據串口注釋看hello一直在被發送。 這是我的WKUP引腳的配置,當我按下這個按鈕的時候,依然
    發表于 03-12 08:15

    STM32L431在STOP2模式下能否將串口的RX配置成EXTI喚醒呢?

    STM32L431在STOP2模式下能否將串口的RX配置成EXTI喚醒呢?為什么我的喚醒不了呢?并且空閑中斷也不能用,手冊中說在硬件上已經將EXTI與RX引腳連到一塊了,但是呢
    發表于 03-12 06:03

    stm32l431rct6的LPTIM計數模式,每次初始化就進入中斷是哪里出了問題?

    HAL_LPTIM_Counter_Stop_IT(&hlptim1); pulse_count = HAL_LPTIM_ReadCounter(&hlptim1
    發表于 03-07 06:16

    STM32U575為什么無法通過LPTIM3將MCUSTOP2模式喚醒

    客戶在 STM32U575 的研發過程中發現了一個奇怪的問題,無法通過 LPTIM3 將MCU STOP2 模式喚醒
    發表于 09-27 07:22

    STM32U5退出stop2模式后進入HardFault_Hand的原因?

    主循環每兩秒修改stopFlag為1,進入stop2模式,外部中斷(lis2ds12的6d檢測)喚醒并修改stopFlag為0; 不連接stlink時,退出stop2后就會進入
    發表于 07-24 06:25

    STM32L431 LPTIM2開啟失敗的原因?

    使用CUBE MX生成LPTIM1和LPTIM2完全相同的配置,時鐘源都是LSI--32K,但是LPTIM1可以使用HAL_LPTIM_TimeOut_Start_IT正常進中斷,
    發表于 07-11 07:02

    普冉單片機PY32F003x6 的奇怪現象,請教大家。

    我用PY32F003x6單片機做了一塊定時板子,為了節能,上電后,讓單片機進入STOP停機模式(用網上下載的例程),然后由時鐘芯片產生拉低的中斷信號喚醒單片機。單片機
    發表于 06-26 10:56
    主站蜘蛛池模板: 最新午夜宅男 | 亚色国产| 俺去啦最新网址 | 成人国产激情福利久久精品 | 亚洲九九香蕉 | 中文天堂最新版资源新版天堂资源 | 亚洲伊人成人 | 97伊人网| 清朝荒淫牲艳史在线播放 | 伊人久久大香线蕉综合亚洲 | 亚洲成a人不卡在线观看 | 欧美日韩一卡2卡三卡4卡新区 | 天天透天天干 | 欧美一级视频免费看 | 特级做a爰片毛片免费看一区 | 国产激情电影综合在线看 | 日本三级理论 | 久久偷窥视频 | 黄色在线观看网站 | 99草在线观看 | 67pao强力打造 | 黄色网址大全免费 | 美女扒开尿囗给男生桶爽 | 免费看黄的视频网站 | 亚洲视频在线免费看 | 国产理论视频在线观看 | 亚洲系列中文字幕一区二区 | 五月婷丁香 | 一女被两男吃奶玩乳尖口述 | 三级在线观看视频网站 | 丁香婷婷亚洲 | 521色香蕉网在线观看免费 | 又黄又粗暴的120秒免费gif视频 | 好男人社区在线观看www | 日本免费小视频 | 99色网站 | 西西人体大胆午夜gog0 | 天天操天天射天天插 | 亚洲精品老司机综合影院 | 免费四影虎ww4hu10 | 天天爱天天做天天爽夜夜揉 |