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

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

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

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

CW32 低功耗模式的特性介紹

武漢芯源半導(dǎo)體有限公司 ? 2022-12-30 10:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

CW32系列芯片支持3種工作模式,運行模式、休眠模式以及深度休眠模式,本文以CW32L083為例介紹低功耗模式的特性。MCU上電以后,系統(tǒng)自動進入運行模式,可以通過軟件配置,進入休眠或者深度休眠兩種低功耗模式,進入低功耗運行狀態(tài)后,可以通過外設(shè)中斷觸發(fā)喚醒機制,使得系統(tǒng)返回到運行模式,三種工作模式的轉(zhuǎn)換機制如下圖所示:

poYBAGOuTwSAKUO3AAA1NDr3uj0735.jpg

三種模式下CPU、時鐘及外設(shè)狀態(tài):

? 運行模式(Active mode)

運行模式下 CPU 正常運行,所有模塊用戶均可正常使用。

? 休眠模式(Sleep mode)

休眠模式下,CPU 停止運行,所有外設(shè)不受影響,所有I/O引腳保持狀態(tài)不變。

? 深度休眠模式(DeepSleep mode)

深度休眠模式下,CPU停止運行,高速時鐘(HSE、HSIOSC)自動關(guān)閉,低速時鐘(LSE、 LSI、RC10K、RC150K)保持原狀態(tài)不變。深度休眠模式的功耗遠小于休眠模式。

CW32L083可以使用等待中斷專用指令,WFI(Wait for Interrupt),配合系統(tǒng)控制寄存器(SCR, System Control Register)的SLEEPONEXIT和SLEEPDEEP位域,可實現(xiàn)立即進入或退出(中斷服務(wù)程序)時進入休眠模式或深度休眠模式。

? 立即進入

執(zhí)行WFI指令,MCU將立即進入休眠模式(SLEEPDEEP為0時)或深度休眠模式(SLEEPDEEP為1時)

? 退出時進入

將SLEEPONEXIT位置1,當(dāng)退出最低優(yōu)先級的中斷服務(wù)程序后,MCU會進入休眠模式(SLEEPDEEP為0時)或深度休眠模式(SLEEPDEEP為 1時),而不需執(zhí)行WFI指令 。

pYYBAGOuUiKADJYpAAC0GU7OciQ366.png

注:在深度休眠模式下,系統(tǒng)將自動關(guān)閉高速時鐘,如果需要在深度休眠模式下使部分外設(shè)仍保持運行,則需要在進入深度休眠模式前,啟動相應(yīng)的低速時鐘并將該外設(shè)時鐘設(shè)置為此低速時鐘。

在休眠模式或深度休眠模式下,均可通過中斷來喚醒CPU,返回到運行模式。如果用戶在中斷服務(wù)程序中執(zhí)行WFI命令進入休眠(包括深度休眠),則需要比此中斷更高優(yōu)先級的中斷才能喚醒CPU,因此,強烈建議在準備進入休眠前,應(yīng)先處理完所有中斷服務(wù)程序,并且清除所有中斷請求和中斷標志,以下是配置進入低功耗模式時所需注意的事項。

?建議在進入低功耗模式前加一段時間的延遲,以免出現(xiàn)上電就進入低功耗模式,無法燒錄程序。

?系統(tǒng)可以配置從Deepsleep喚醒后,系統(tǒng)時鐘來源是HSI還是進入休眠前的時鐘。

?系統(tǒng)進入低功耗模式,端口狀態(tài)不會發(fā)生改變,此時需要客戶根據(jù)實際應(yīng)用來配置端口狀態(tài)來達到理想的功耗值,未用端口建議配置為模擬模式。

?其他的RTC等低功耗運行模塊因在深度休眠下高速時鐘停止運行,所以如果需要在深度休眠模式下運行RTC等模塊,需配置模塊時鐘源為LSI或LSE。

根據(jù)上述內(nèi)容,可以配置CW32L083的低功耗應(yīng)用的例程,具體的代碼可以查看CW32L083的固件庫中PWR_CurrentConsumption這一例程,配置PA04和PA05為引腳輸入,并開啟下降沿中斷,在中斷服務(wù)函數(shù)改變gKeyStatus的值,從而使得MCU在main中進入低功耗休眠模式。


volatile uint8_t gKeyStatus; 
volatile uint32_t gFlagWakeUpIrq = 0; 
int main(void)
{
    RCC_HSI_Enable( RCC_HSIOSC_DIV6); //配置系統(tǒng)時鐘為HSI 8M
    InitTick(8000000ul); //初始化SysTick
    LED_Init();        //LED初始化
    BSP_PB_Init(); //按鍵初始化
    while (1)
    {
       gKeyStatus = 0;//在沒有進入低功耗模式前,PC03每間隔1s翻轉(zhuǎn)一次狀態(tài)
       do
       {
     PC03_TOG();        //翻轉(zhuǎn)LED1
       SysTickDelay(1000);  //延遲1s.
       } while (gKeyStatus == 0);      
       PC03_SETLOW();        //PC03置低
       DeepSleepModeTest();   //進入深度睡眠模式
     }
}

//按鍵初始化,設(shè)置PA05沿下降沿觸發(fā)中斷
void BSP_PB_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure = {0};
    //打開GPIOA時鐘
    REGBITS_SET(CW_SYSCTRL->AHBEN, SYSCTRL_AHBEN_GPIOA_Msk);
    GPIO_InitStructure.Pins = GPIO_PIN_5;
    GPIO_InitStructure.Mode = GPIO_MODE_INPUT_PULLUP;
    GPIO_InitStructure.IT = GPIO_IT_FALLING;
    GPIO_Init(CW_GPIOA, &GPIO_InitStructure);
    GPIO_ConfigFilter(CW_GPIOA, GPIO_PIN_5, GPIO_FLTCLK_RC10K);
    //設(shè)置GPIOA的中斷等級為3
    NVIC_SetPriority(GPIOA_IRQn, 0x03);
    GPIOA_INTFLAG_CLR(GPIOx_ICR_PIN5_Msk );
    NVIC_EnableIRQ(GPIOA_IRQn);
}

//LED I/O初始化
void LED_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure = {0};
    //打開GPIO時鐘
    REGBITS_SET(CW_SYSCTRL->AHBEN, SYSCTRL_AHBEN_GPIOC_Msk);
    GPIO_InitStructure.Pins = GPIO_PIN_2 | GPIO_PIN_3;
    GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_Init(CW_GPIOC, &GPIO_InitStructure);
    PC03_SETLOW();
}

void DeepSleepModeTest(void)
{
  GPIO_InitTypeDef GPIO_InitStructure = { 0 };
  PWR_InitTypeDef PWR_InitStructure = { 0 };

  //打開GPIO時鐘
  REGBITS_SET(CW_SYSCTRL->AHBEN,SYSCTRL_AHBEN_GPIOA_Msk|\
  SYSCTRL_AHBEN_GPIOB_Msk | \
  SYSCTRL_AHBEN_GPIOC_Msk | SYSCTRL_AHBEN_GPIOF_Msk);

  GPIO_InitStructure.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStructure.IT = GPIO_IT_NONE;
  GPIO_InitStructure.Pins = GPIO_PIN_All;
  GPIO_Init(CW_GPIOA, &GPIO_InitStructure);
  GPIO_Init(CW_GPIOB, &GPIO_InitStructure);
  GPIO_Init(CW_GPIOC, &GPIO_InitStructure);
  GPIO_Init(CW_GPIOF, &GPIO_InitStructure);
  //關(guān)閉GPIO時鐘
  REGBITS_CLR(CW_SYSCTRL->AHBEN,SYSCTRL_AHBEN_GPIOA_Msk| \
  SYSCTRL_AHBEN_GPIOB_Msk | \
  SYSCTRL_AHBEN_GPIOC_Msk | SYSCTRL_AHBEN_GPIOF_Msk);
  BSP_PB_Init();            //按鍵初始化
  // 喚醒后自動使用內(nèi)部高速時鐘(HSI)
  RCC_WAKEUPCLK_Config(RCC_SYSCTRL_WAKEUPCLKEN);
  PWR_InitStructure.PWR_Sevonpend = PWR_Sevonpend_Disable;
  PWR_InitStructure.PWR_SleepDeep = PWR_SleepDeep_Enable;
  PWR_InitStructure.PWR_SleepOnExit = PWR_SleepOnExit_Disable;
  PWR_Config(&PWR_InitStructure);
  PWR_GotoLpmMode();
  SYSCLKConfig_DeepSleep();
  LED_Init();
  SysTickDelay(200);
  PC02_SETHIGH();
  }
}
//GPIOA中斷服務(wù)函數(shù)
void GPIOA_IRQHandler(void)
{
 if(REGBITS_GET(CW_GPIOA->ISR, GPIOx_ISR_PIN5_Msk) > 0)
    {
        gKeyStatus = 1;
        GPIOA_INTFLAG_CLR(GPIOx_ICR_PIN5_Msk);//清除CW_GPIO中斷標志
    }

}

上述代碼可以看到在未進入低功耗模式之前,LED1每1s翻轉(zhuǎn)一次,通過按鍵KEY2進入低功耗模式后,LED1燈滅,當(dāng)再次按下KEY2后,重新回到正常的運行模式,LED1每一秒翻轉(zhuǎn)一次。通過測量可以得到,進入到低功耗模式之后,功耗顯著降低。


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

    關(guān)注

    6074

    文章

    45321

    瀏覽量

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

    關(guān)注

    147

    文章

    18589

    瀏覽量

    385971
  • 微控制
    +關(guān)注

    關(guān)注

    1

    文章

    51

    瀏覽量

    14893
  • 32位MCU
    +關(guān)注

    關(guān)注

    9

    文章

    203

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    cw32 systick怎么用?

    cw32 systick怎么用
    發(fā)表于 12-01 08:10

    CW32定時器及中斷介紹

    可以由硬件自 動執(zhí)行觸發(fā)信號的濾波操作,還能令觸發(fā)事件產(chǎn)生中斷和 DMA 請求。 低功耗定時器:CW32L083 內(nèi)部集成 1 個 16 位低功耗定時器(LPTIM),可以以很低的功耗
    發(fā)表于 12-01 07:08

    如何在CW32 MCU上優(yōu)化I2C通信

    MCU上優(yōu)化I2C通信,從頻率調(diào)節(jié)的角度出發(fā),確保在各種工作條件下的數(shù)據(jù)完整性和通信穩(wěn)定性。 具體內(nèi)容包括: I2C通信基礎(chǔ)與CW32 MCU的I2C接口: 介紹I2C通信的基本原理及其在
    發(fā)表于 11-27 06:25

    deepseek來分析CW32單片機的特點

    應(yīng)用。 CW32F103:基于Cortex-M3,性能更強,外設(shè)豐富。 CW32L052:低功耗型號,適合電池供電場景。 總結(jié)[size=16.002px]CW32單片機以其高性能、
    發(fā)表于 11-26 06:33

    使用J-Flash來編程CW32 MCU

    1.安裝J-Flash: 從SEGGER官方網(wǎng)站下載最新版本的J-Flash工具。 按照安裝向?qū)У闹甘就瓿砂惭b過程。 2.連接硬件: 將CW32 MCU通過調(diào)試器(如J-LINK)連接到你的計算機
    發(fā)表于 11-25 07:00

    【活動評測】基于CW32的wegui實驗+代碼

    簡介 最近參加了cw32生態(tài)社區(qū)的體驗活動,CW32L012C8T6評估板是一款非常典型的、用于展示和評估國產(chǎn)低功耗MCU的開發(fā)板。它的核心價值在于讓開發(fā)者能夠以極低的成本,接觸到武漢芯源半導(dǎo)體
    的頭像 發(fā)表于 11-19 16:37 ?429次閱讀
    【活動評測】基于<b class='flag-5'>CW32</b>的wegui實驗+代碼

    CW32單片機UART低功耗模式介紹

    ,往往是靠電池來供電,所以設(shè)計人員從每一個細節(jié)來考慮降低功率消耗,從而盡可能地延長電池使用時間。因此,大部分芯片都會有低功耗模式,以CW32L083為例,它就是一個32位低功耗微控制器
    發(fā)表于 11-19 06:08

    CW32 MCU用什么IDE開發(fā)?

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開發(fā)CW32 MCU應(yīng)用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM則需要安裝CW
    發(fā)表于 11-12 07:52

    CW32 MCU有哪些系列?

    目前CW32 MCU有通用高性能MCU、安全低功耗MCU、無線射頻MCU等3個系列。其中射頻MCU集成了無線收發(fā)器,主要包括CW32R031(2.4GHz BLE-Lite)系列和CW
    發(fā)表于 11-12 07:34

    CW32 UART低功耗模式詳解

    ,往往是靠電池來供電,所以設(shè)計人員從每一個細節(jié)來考慮降低功率消耗,從而盡可能地延長電池使用時間。因此,大部分芯片都會有低功耗模式,以CW32L083為例,它就是一個32位低功耗微控制器
    發(fā)表于 11-12 07:24

    CW32 MCU的工作電壓、工作溫度是多少?

    32F003、CW32F002等,其工作溫度為-40℃~105℃,其余系列,比如:CW32L083、CW32L031等低功耗系列,以及CW3
    發(fā)表于 11-12 06:49

    CW32 MCU最低功耗能做到多少?

    CW32L系列,比如:CW32L083、CW32L031在深度休眠模式下,電流可低至600nA以下,CW32L010則可低至0.3uA;其它
    發(fā)表于 11-12 06:24

    CW32 MCU用什么仿真器開發(fā)?

    理論上各主流IDE枚舉的、支持ARM Cortex內(nèi)核的所有硬件仿真器,比如:J-LINK,ULINK,DAP,ST-Link等,都可以仿真、下載CW32 MCU的應(yīng)用代碼。如果想實現(xiàn)量產(chǎn)或者離線下載應(yīng)用代碼,則必須配套支持CW32 MCU的PC端軟件,因此推薦使用
    發(fā)表于 11-12 06:01

    武漢芯源半導(dǎo)體CW32L010在兩輪車儀表的應(yīng)用介紹

    主控MCU芯片CW32L010介紹 CW32L010 是基于 eFlash 的單芯片低功耗微控制器,集成了主頻高達 48MHz 的 ARM? Cortex?-M0+ 內(nèi)核、高速嵌入式
    發(fā)表于 05-13 14:06

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實戰(zhàn)正式出版

    CW32 單片機的高級特性和應(yīng)用技巧,如低功耗設(shè)計、高速通信接口的優(yōu)化、實時操作系統(tǒng)的移植等。同時,書中還分享了許多實際項目中的開發(fā)經(jīng)驗和解決方案,這些寶貴的經(jīng)驗將有助于開發(fā)者拓寬思路,提高開發(fā)效率,解決在
    發(fā)表于 03-03 15:14