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

【正點(diǎn)原子STM32連載】第三十一章 待機(jī)模式實(shí)驗(yàn) 摘自【正點(diǎn)原子】APM32E103最小系統(tǒng)板使用指南

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

1)實(shí)驗(yàn)平臺(tái):正點(diǎn)原子APM32E103最小系統(tǒng)板
2)平臺(tái)購買地址:https://detail.tmall.com/item.htm?id=609294757420
3)全套實(shí)驗(yàn)源碼+手冊(cè)+視頻下載地址: http://www.openedv.com/docs/boards/xiaoxitongban

第三十一章 待機(jī)模式實(shí)驗(yàn)

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

31.1 硬件設(shè)計(jì)
31.1.1 例程功能

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

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

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

#include "apm32e10x.h"
#include "apm32e10x_pmu.h"

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

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

#include "apm32e10x.h"
#include "apm32e10x_pmu.h"

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

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

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

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

int main(void)
{
    uint8_t key;
    uint8_t t = 0;
    
    NVIC_ConfigPriorityGroup(NVIC_PRIORITY_GROUP_4);  /* 設(shè)置中斷優(yōu)先級(jí)分組為組4 */
    sys_apm32_clock_init(15);                         /* 配置系統(tǒng)時(shí)鐘 */
    delay_init(120);                                  /* 初始化延時(shí)功能 */
    usart_init(115200);                               /* 初始化串口 */
    led_init();                                       /* 初始化LED */
    lcd_init();                                       /* 初始化LCD */
    key_init();                                       /* 初始化按鍵 */
    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();                      /* 進(jìn)入待機(jī)模式 */
        }
        
        if ((t % 20) == 0)
        {
            LED0_TOGGLE();
        }
        t++;
        delay_ms(10);
    }
}

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

到了這里,關(guān)于【正點(diǎn)原子STM32連載】第三十一章 待機(jī)模式實(shí)驗(yàn) 摘自【正點(diǎn)原子】APM32E103最小系統(tǒng)板使用指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包