使用CW32L083的評估板完成簡易低功耗例程實驗。
功能定義如下:在正常運行模式下,LED1每1s翻轉(zhuǎn)一次。當(dāng)按下KEY2按鍵時,LED1燈滅,進入低功耗模式。當(dāng)再次按下KEY2后,重新回到正常的運行模式,LED1每一秒翻轉(zhuǎn)一次。通過以上方式可以測量,正常運行模式與低功耗模式的功耗。
查看CW32L083評估板的原理圖,KEY2按鍵對應(yīng)的GPIO口為PA05口,當(dāng)鍵按下時,PA05讀入為低電平。LED1指示燈對應(yīng)的GPIO口為PC03,當(dāng)PC03端口輸出高電平時,指示燈亮。
配置為引腳輸入,并開啟下降沿中斷,在中斷服務(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(); PC02_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(); //進入休眠 RCC_HSI_Enable( RCC_HSIOSC_DIV6); //配置系統(tǒng)時鐘為HSI 8M InitTick(8000000ul); //初始化SysTick LED_Init(); //LED初始化 } } //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中斷標(biāo)志 } }
二 休眠配置寄存器定義如下
上述代碼運行時的效果:在未進入低功耗模式之前,LED1每1s翻轉(zhuǎn)一次,通過按鍵KEY2進入低功耗模式后,LED1燈滅,當(dāng)再次按下KEY2后,重新回到正常的運行模式,LED1每一秒翻轉(zhuǎn)一次。通過測量可以得到,進入到低功耗模式之后,功耗顯著降低。
三 運行結(jié)果如下
從外界給L083開發(fā)板供3.3V電,使用常見的萬用表測試。
運行模式下LED1指示燈滅時的功耗為2.955MA。
運行模式下LED1指示燈亮?xí)r的功耗為3.849MA。
進入超低功耗模式下功耗為0.64uA。
這是本期測試的簡易低功耗功能測試,下期我們就用UART來控制深度休眠模式的實現(xiàn)。
-
led
+關(guān)注
關(guān)注
242文章
23375瀏覽量
663383 -
低功耗
+關(guān)注
關(guān)注
10文章
2419瀏覽量
103907 -
uart
+關(guān)注
關(guān)注
22文章
1244瀏覽量
101797 -
評估板
+關(guān)注
關(guān)注
1文章
560瀏覽量
29467 -
CW32
+關(guān)注
關(guān)注
1文章
218瀏覽量
742
原文標(biāo)題:外部中斷喚醒實驗 ——以CW32L083VXTX評估板為實驗對象,進行低功耗測試系列實驗講解(5)
文章出處:【微信號:CW32生態(tài)社區(qū),微信公眾號:CW32生態(tài)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
以CW32L083VXTX板為對象進行低功耗測試系列實驗講解(4)
![以<b class='flag-5'>CW32L083</b>VXTX<b class='flag-5'>板</b>為對象進行<b class='flag-5'>低功耗</b><b class='flag-5'>測試</b>系列實驗講解(4)](https://file1.elecfans.com/web2/M00/9E/1E/wKgaomToASiAJUG6AACQ2u2t9jY438.png)
武漢芯源Cortex-M0+ 32位低功耗MCU CW32L083系列產(chǎn)品介紹
分享武漢芯源CW32L083VxTx_StartKit開發(fā)板資料
CW32L083產(chǎn)品介紹
CW32L083微控制器數(shù)據(jù)手冊
武漢芯源CW32L083開發(fā)板介紹
![武漢芯源<b class='flag-5'>CW32L083</b>開發(fā)<b class='flag-5'>板</b>介紹](https://file.elecfans.com/web2/M00/71/92/poYBAGNQw32AAKaBAAEjeIPaCIY456.png)
CW32L083不同主頻功耗測試
![<b class='flag-5'>CW32L083</b>不同主頻<b class='flag-5'>功耗</b><b class='flag-5'>測試</b>](https://file1.elecfans.com/web2/M00/8B/85/wKgZomSanB2Ab91VAAAsSHjQAK4168.png)
評論