国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【正點原子STM32連載】第三十三章 待機模式實驗 摘自【正點原子】APM32F407最小系統(tǒng)板使用指南

這篇具有很好參考價值的文章主要介紹了【正點原子STM32連載】第三十三章 待機模式實驗 摘自【正點原子】APM32F407最小系統(tǒng)板使用指南。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1)實驗平臺:正點原子stm32f103戰(zhàn)艦開發(fā)板V4
2)平臺購買地址:https://detail.tmall.com/item.htm?id=609294757420
3)全套實驗源碼+手冊+視頻下載地址: http://www.openedv.com/thread-340252-1-1.html##

第三十三章 待機模式實驗

本章介紹APM32F407低功耗模式中的待機模式,進入待機模式后,MCU內(nèi)部的電壓調(diào)壓器將斷開1.3V電源域的電源,這意味著內(nèi)核和外設(shè)都將停止工作,并且內(nèi)核寄存器和內(nèi)存中的數(shù)據(jù)都將丟失,但這也是功耗最低的模式,待機模式下可被WKUP引腳的上升沿喚醒。通過本章的學(xué)習(xí),讀者將學(xué)習(xí)到低功耗模式下待機模式的使用。
本章分為如下幾個小節(jié):
33.1 硬件設(shè)計
33.2 程序設(shè)計
33.3 下載驗證

33.1 硬件設(shè)計
33.1.1 例程功能

  1. 運行模式下,按下KEY0按鍵,進入待機模式,此時TFTLCD和LED0均熄滅
  2. 待機模式下,按下KEY_UP按鍵,喚醒MCU,此時TFTLCD點亮,同時LED0閃爍,指示程序正在運行
    33.1.2 硬件資源
  3. LED
    LED0 - PF9
  4. 按鍵
    KEY0 - PE4
    KEY_UP - PA0
  5. 正點原子 2.8/3.5/4.3/7/10寸TFTLCD模塊(僅限MCU屏,16位8080并口驅(qū)動)
    33.1.3 原理圖
    本章實驗介紹APM32F407低功耗模式中的待機模式,不涉及連接原理圖。
    33.2 程序設(shè)計
    33.2.1 Geehy標準庫的PMU驅(qū)動
    本實驗配置了KEY_UP按鍵(連接至WKUP引腳)喚醒待機模式,因此具體的配置步驟如下:
    ①:使能WKUP引腳功能
    ②:清除喚醒事件標志
    ③:進入待機模式
    在Geehy標準庫中對應(yīng)的驅(qū)動函數(shù)如下:
    ①:使能WKUP引腳功能
    該函數(shù)用于使能WKUP引腳功能,其函數(shù)原型如下所示:
    void PMU_EnableWakeUpPin(void);
    該函數(shù)的形參描述,如下表所示:
    形參 描述
    無 無
    表33.2.1.1 函數(shù)PMU_EnableWakeUpPin()形參描述
    該函數(shù)的返回值描述,如下表所示:
    返回值 描述
    無 無
    表33.2.1.2 函數(shù)PMU_EnableWakeUpPin()返回值描述
    該函數(shù)的使用示例,如下所示:
#include "apm32f4xx.h"
#include "apm32f4xx_pmu.h"

void example_fun(void)
{
    /* 使能WKUP引腳功能 */
    PMU_EnableWakeUpPin();
}

②:清除PMU事件標志
該函數(shù)用于清除PMU的事件標志,其函數(shù)原型如下所示:
void PMU_ClearStatusFlag(PMU_FLAG_T flag);
該函數(shù)的形參描述,如下表所示:
形參 描述
flag 指定清除的PMU事件標志
例如:PMU_FLAG_WUE、PMU_FLAG_SB(在apm32f4xx_pmu.h文件中有定義)
表33.2.1.3 函數(shù)PMU_ClearStatusFlag()形參描述
該函數(shù)的返回值描述,如下表所示:
返回值 描述
無 無
表33.2.1.4 函數(shù)PMU_ClearStatusFlag()返回值描述
該函數(shù)的使用示例,如下所示:

#include "apm32f4xx.h"
#include "apm32f4xx_pmu.h"

void example_fun(void)
{
    /* 清除PMU喚醒事件標志 */
    PMU_ClearStatusFlag(PMU_FLAG_WUE);
}

③:進入待機模式
該函數(shù)用于進入待機模式,其函數(shù)原型如下所示:
void PMU_EnterSTANDBYMode(void);
該函數(shù)的形參描述,如下表所示:
形參 描述
無 無
表33.2.1.5 函數(shù)PMU_EnterSTANDBYMode()形參描述
該函數(shù)的返回值描述,如下表所示:
返回值 描述
無 無
表33.2.1.6 函數(shù)PMU_EnterSTANDBYMode()返回值描述
該函數(shù)的使用示例,如下所示:

#include "apm32f4xx.h"
#include "apm32f4xx_pmu.h"

void example_fun(void)
{
    /* 進入待機模式 */
    PMU_EnterSTANDBYMode();
}

33.2.2 PMU驅(qū)動
本章實驗的PMU驅(qū)動主要負責(zé)向應(yīng)用層提供進入待機模式的函數(shù)。本章實驗中,PMU的驅(qū)動代碼包括pmu.c和pmu.h兩個文件。
PMU驅(qū)動中,進入待機模式的函數(shù),如下所示:

/**
 * @brief	進入待機模式
 * @param	無
 * @retval	無
 */
void pmu_enter_standby(void)
{
    RCM->AHB3CLKEN_B.EMMCEN = DISABLE;			/* 進入待機模式前,需先關(guān)閉EMMC時鐘 */
    RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_PMU);	/* 使能PMU時鐘 */
    PMU_EnableWakeUpPin();							/* 配置KEY_UP按鍵用于喚醒MCU */
    PMU_ClearStatusFlag(PMU_FLAG_WUE);				/* 清除喚醒標志 */
    PMU_EnterSTANDBYMode();							/* 進入待機模式 */
}

從上面的代碼中可以看出,在進入待機模式前還關(guān)閉了EMMC的時鐘,這點非常重要,若進入待機模式時,EMMC的時鐘為使能狀態(tài),則無法正常進入待機模式。隨后還依次使能了WKUP引腳功能和清除喚醒標志,最后調(diào)用函數(shù)PMU_EnterSTANDBYMode()進入待機模式。
33.2.3 實驗應(yīng)用代碼
本章實驗的應(yīng)用代碼,如下所示:

int main(void)
{
    uint8_t key;
    uint8_t t = 0;
    
    NVIC_ConfigPriorityGroup(NVIC_PRIORITY_GROUP_3);	/* 設(shè)置中斷優(yōu)先級分組為組3 */
    sys_apm32_clock_init(336, 8, 2, 7);					/* 配置系統(tǒng)時鐘 */
    delay_init(168);										/* 初始化延時功能 */
    usart_init(115200);									/* 初始化串口 */
    led_init();											/* 初始化LED */
    key_init();											/* 初始化按鍵 */
    lcd_init();											/* 初始化LCD */
    
    lcd_show_string(30, 50, 200, 16, 16, "APM32", RED);
    lcd_show_string(30, 70, 200, 16, 16, "STANDBY TEST", RED);
    lcd_show_string(30, 90, 200, 16, 16, "ATOM@ALIENTEK", RED);
    lcd_show_string(30, 110, 200, 16, 16, "KEY0:Enter STANDBY MODE", RED);
    lcd_show_string(30, 130, 200, 16, 16, "KEY_UP:Exit STANDBY MODE", RED);
    
    while (1)
    {
    		key = key_scan(0);
    		
    		if (key == KEY0_PRES)
    		{
    			pmu_enter_standby();	/* 進入待機模式 */
    		}
    		
    		if ((t % 20) == 0)
    		{
    			LED0_TOGGLE();
    		}
    		
    		t++;
    		delay_ms(10);
    }
}

從上面的代碼中可以看出,在完成相關(guān)的初始化操作后,便不斷地掃描按鍵,若掃描到KEY0按鍵被按下,則會進入待機模式,進入待機模式后LED0便不再閃爍,說明此時程序已經(jīng)停止運行,進入了待機模式,此時可以按下KEY_UP按鍵進行待機模式喚醒,隨后便可看到LED0恢復(fù)閃爍,說明程序再次運行。
33.3 下載驗證
在完成編譯和燒錄操作后,可以看到LED0閃爍提示系統(tǒng)正在運行,此時可以按下KEY0按按鍵,可以看到LED0不再閃爍,這是因為系統(tǒng)已經(jīng)進入待機模式了,此時再按下KEY_UP按鍵,即可從待機模式下喚醒,可以看到LED0繼續(xù)閃爍。文章來源地址http://www.zghlxwxcb.cn/news/detail-732990.html

到了這里,關(guān)于【正點原子STM32連載】第三十三章 待機模式實驗 摘自【正點原子】APM32F407最小系統(tǒng)板使用指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包