娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年10月17日(星期四)

正在發生

2018年10月17日 | 50.待機喚醒實驗

發布者:ohp991養生的香菇 來源: eefocus關鍵字:待機  喚醒實驗  STM32 手機看文章 掃描二維碼
隨時隨地手機看文章

一。STM32低功耗模式講解

50.待機喚醒實驗

有些設備比如可穿戴設備對功耗的要求非常高,比如手表,我在看時間或者獲取數據的時候就需要正常的執行,

但有的時候比如晚上或有時候不需要使用它,但我們并不需要關機,可以通過低功耗模式讓它更加省電,就延長了它的使用時間。

50.待機喚醒實驗
1. 睡眠模式: 內核停止,但是它的外設比如中斷管理NVIC,系統的時鐘Systick仍在運行。

2. 停止模式:比睡眠模式更加低功耗,所有的時鐘都停止,但是1.8V的內核電源還在工作,但是其他的時鐘比如                     PLL,HIS和HSE RC振蕩器功能全部禁止了。

                    寄存器和SRAM的內容保留。

3. 待機模式:功耗更低,內核1.8V的電源關閉,只有備份寄存器和待機電路維持供電。

                    寄存器和SRAM內容全部丟失,實現最低功耗。

運行模式,有些場景我們還是需要系統能正常運行,我們要降低功耗的話可以采取以下方式:

1. 降低系統時鐘

2. 關閉APB和AHB總線上未被使用的外設的時鐘。

STM32的三種低功耗模式

要進入這三種低功耗模式或者從三種低功耗模式退出的方法:

50.待機喚醒實驗
1. 睡眠模式:進入的方法:(1)執行WFI指令或WFE指令,只需要調用一個函數就OK了。

                    喚醒的方法: 對于WFI進入:任一個中斷

                                         對于WFE進入:喚醒事件

2. 停機模式: 進入的方法:PDDS和LPDS位 + SLEEPDEEP位都需要設置,然后再用WFI或WFE指令。

                     喚醒的方法:任何一種外部中斷都可以(在外部中斷寄存器中設置)

3. 待機模式: 進入的方法: PDDS位+SLEEPDEEP位設置,清除WUF位,然后再用WFI或WFE指令進入

                     喚醒的方法:通過WKUP引腳的上升沿(PA0引腳),或者RTC鬧鐘事件,或者NRST引腳上的外                                            部復位,獨立看門狗IWDG復位。常用的是鬧鐘事件或者外部WKUP引腳。

實驗程序用WKUP引腳(PA0)喚醒。

實驗采用待機模式:

50.待機喚醒實驗
待機模式下大部分引腳都處于高阻狀態。

在待機模式下F1只需要2uA的電流,非常低。

二。寄存器和庫函數配置

1. PWR_CR電源控制寄存器

50.待機喚醒實驗

位1: PDDS,在進入待機模式要置1

SLEEPDEEP在系統控制寄存器SCB中置1。

清除PWR_CSR寄存器中的WUF位。

2. PWR_CSR 電源控制/狀態寄存器

50.待機喚醒實驗

退出待機模式有幾種方法,如果要用WKUP引腳喚醒怎么配置?

PWR_CSR寄存器位8,EWUP使能WKUP引腳。

固件庫中低功耗操作函數

50.待機喚醒實驗
調用 void PWR_EnterSTANDBYMode(void);  //進入待機模式

這個函數中執行了四個操作:1. PDDS位置1

                                            2. SLEEPDEEP位置1

                                            3. 清除WUF位

                                            4. 執行WFI()指令,當然也可以執行WFE()指令

待機喚醒的配置步驟

50.待機喚醒實驗

三。實驗程序講解

實驗程序比較復雜,主要是為了在同一個WKUP引腳(PA0)長按3秒進入待機模式,在待機模式下,長按3秒待機喚醒。

程序的設計思路提醒:

50.待機喚醒實驗

1. 先寫一個待機喚醒測試

按下某一個按鍵進入待機模式

(1)在FWLlib下面要添加PWR相關的固件庫 .c 和 .h文件

(2)程序設計:程序復位后液晶屏被點亮,顯示一些內容,然后按下KEY0之后進入待機模式,在待機模式下按下WKUP鍵退出待機模式,程序又相當于復位從頭開始執行,液晶屏又重新顯示內容。

int main(void)

 {  

  u8 x=0;

u8 lcd_id[12]; //存放LCD ID字符串

delay_init();     //延時函數初始化  

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級

uart_init(115200); //串口初始化為115200

  LED_Init();     //LED端口初始化

LCD_Init();

KEY_Init();

 

POINT_COLOR=RED;  

LCD_ShowString(30,40,210,24,24,"WarShip STM32 ^_^");   //液晶屏顯示一些內容

LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");

LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");

while(1)

{

if(KEY_Scan(0) == KEY0_PRES)

{

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);  //使能PWR時鐘,在APB1總線上

PWR_WakeUpPinCmd(ENABLE);  //使能WKUP喚醒引腳,使得在待機模式下按WKUP鍵能夠退出待機模式

PWR_EnterSTANDBYMode();  //進入待機模式

}

delay_ms(10);

}

}

實驗現象:程序開始運行,液晶屏顯示三行文字,按下KEY0鍵時進入待機模式,液晶屏關閉,按下WKUP鍵,液晶屏重新顯示內容。

2. 實驗程序

在同一個WKUP引腳(PA0)長按3秒進入待機模式,在待機模式下,長按3秒待機喚醒。

wkup.c 文件

//PA0 WKUP喚醒初始化

void WKUP_Init(void)

{

  GPIO_InitTypeDef  GPIO_InitStructure;    

NVIC_InitTypeDef NVIC_InitStructure;

EXTI_InitTypeDef EXTI_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);//使能GPIOA和復用功能時鐘,因為后面要把PA0引腳配置成外部中斷,所以要開啟復用功能。

GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0; //PA.0

GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPD;//上拉輸入

GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化IO

    //使用外部中斷方式,配置中斷線

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); //中斷線0連接GPIOA.0

  EXTI_InitStructure.EXTI_Line = EXTI_Line0; //設置按鍵所有的外部線路

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //設外外部中斷模式:EXTI線路為中斷請求

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  //上升沿觸發

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure); // 初始化外部中斷

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //使能按鍵所在的外部中斷通道

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //先占優先級2級

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //從優先級2級

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道

NVIC_Init(&NVIC_InitStructure); //根據NVIC_InitStruct中指定的參數初始化外設NVIC寄存器

if(Check_WKUP()==0) Sys_Standby();    //開機后沒有連續按下WKUP引腳3秒,進入待機模式 ,只有開機                                                                           時連續按下WKUP鍵3秒程序才能正常執行。

}

//檢測WKUP腳的信號

//返回值1:連續按下3s以上

//      0:錯誤的觸發

u8 Check_WKUP(void)  //檢測WKUP引腳的電平,3秒鐘內連續按下返回1,

{

u8 t=0; //記錄按下的時間

LED0=0; //亮燈DS0 

while(1)

{

if(WKUP_KD)

{

t++; //已經按下了 

delay_ms(30);

if(t>=100) //按下超過3秒鐘,每30毫秒 t+1, t計數到100,說明到3秒鐘

{

LED0=0; //點亮DS0 

return 1; //按下3s以上了,返回1

}

}else 

LED0=1;

return 0; //按下不足3秒,返回0

}

}

void Sys_Standby(void)

{  

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR外設時鐘

PWR_WakeUpPinCmd(ENABLE);  //使能喚醒管腳功能

PWR_EnterSTANDBYMode();  //進入待命(STANDBY)模式 ,進入待機模式  

}

main.c文件

int main(void)

 {  

  

delay_init();     //延時函數初始化  

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級

uart_init(115200); //串口初始化為115200

LED_Init();     //LED端口初始化

WKUP_Init(); //待機喚醒初始化


LCD_Init(); //LCD初始化

POINT_COLOR=RED;

 

LCD_ShowString(30,50,200,16,16,"Warship STM32");

LCD_ShowString(30,70,200,16,16,"WKUP TEST");

LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");

LCD_ShowString(30,110,200,16,16,"2014/1/14");

 

while(1)

{

LED0=!LED0;

delay_ms(250);

}

 }

//外部中斷,檢測到PA0腳的一個上升沿.  

//中斷線0線上的中斷檢測

void EXTI0_IRQHandler(void)

{                

EXTI_ClearITPendingBit(EXTI_Line0); // 清除LINE10上的中斷標志位  

if(Check_WKUP())//檢測WKUP鍵是不是連續按下3秒鐘,連續按下3秒進入待機模式

{  

Sys_Enter_Standby();   //如果是連續按下3秒,就進入待機喚醒模式

}

//系統進入待機模式

void Sys_Enter_Standby(void)

{  

RCC_APB2PeriphResetCmd(0X01FC,DISABLE); //復位所有IO口

Sys_Standby();

}

程序正常運行時顯示幾行文字,LED0交叉閃爍。

在WKUP_Init函數中如果沒有連續按下3秒就進入待機模式

如果連續按下了WKUP鍵3秒,則正常執行,而在正常執行的情況下因為我們把WKUP設置了外部中斷,進入外部中斷函數

實驗現象:

程序開始執行,判斷WKUP是不是按下了,如果沒有長按3秒就進入待機模式。

因為一開始沒有按WKUP,所以進入待機模式,液晶屏不亮。

然后連續按WKUP3秒后就喚醒了,液晶屏顯示幾行文字,LED0也開始閃爍。

因為,一按WKUP的瞬間就被喚醒,同樣開始執行主函數,執行到

if(Check_WKUP()==0) Sys_Standby();    //不是開機,進入待機模式 

因為我們長按了3秒所以這個檢測就不通過,就不會進入待機模式,程序就直接往下執行,液晶屏顯示,LED0閃爍。

接下來再去長按WKUP3秒,又進入待機模式。因為程序正常運行情況下,我們把WKUP設置成了外部中斷,所以一按PA0就會進入外部中斷服務函數,在中斷服務函數中去判斷按下WKUP是不是超過3秒,超過3秒就進入到待機模式,如果按下的時間不到3秒鐘,不會進入待機模式,液晶屏還是正常顯示。


關鍵字:待機  喚醒實驗  STM32 引用地址:50.待機喚醒實驗

上一篇:51.內部溫度傳感器實驗
下一篇:49. RTC實驗講解

推薦閱讀

世界上所有的科技迷都對機器人的發展保持關注,眾多的未來科技電影也表現了人們對于未來機器人的期待:更加人性化,更仿真。現在的機器人功能上已經做得非常優秀了,所以有不少科技人員把目光投向了更加人性化智能化方面,并且為此做出了不少努力。世界上有不少國家都已經生產出了更加人性化的機器人,而且巧合的是這些機器人都是女性形象。在這方面最出名...
(文章來源:半導體投資聯盟) 2014年和2015年,隨著IBM和微軟(crosoft)等科技巨頭的巨額投資,以及隨之而來的大量宣傳,人工智能和在人們的視野中一炮走紅。弗雷斯特研究公司(Forrester Research)分析師克雷格勒克萊爾(Craig Le Claire)表示,如今,人工智能/ML市場似乎正在“后退”。 Le Claire在一個由AutomaTIon Anywhere贊助的活動上發表講...
10月16日-17日,“第五屆動力電池應用國際峰會(CBIS2020)暨首屆中國新能源新材料(寧德)峰會”首次來到寧德。作為聯合主辦方和東道主,寧德時代董事長曾毓群發表了演講,就業界關注的電池安全問題,給出了新的解決方案。曾毓群表示,“大家要對技術創新的潛力,充滿信心。 應對新能源汽車的安全挑戰,用科技創新和技術突破完全可以得以解決。”寧德時...
10月15日晚,四會富仕發布公告稱,前三季度實現營收7.54億元,同比增長59.34%;歸屬于上市公司股東的凈利潤為1.41億元,同比增長59.15%。其中,第三季度營收2.97億元,同比增長107.82%;歸屬于上市公司股東的凈利潤為5751萬元,同比增長107.22%。年8月6日,四會富仕與日本シイエムケイ株式會社、新昇電子(香港)有限公司(以下統稱“CMK集團”)共同簽署...

史海拾趣

問答坊 | AI 解惑

喚醒wince6后,GPRS無法撥號

    WINCE6 系統,可以正常的GPRS撥號;但是進入睡眠,然后喚醒,那么GPRS無法撥號,提示是“提示調制解調器沒有插好或有故障”, 但是使用串口數據發送AT命令, 以及AT+CGDCONT=1,\"IP\",\"CMNET\"  都是正確回應的 。那位DX ...…

查看全部問答∨

50分求2440 CE的VIVI

小弟從沒有接觸過VIVI,(以后都是用EBOOT的),哪位老大能介紹一下VIVI的情況?有2440的VIVI能給我傳一下嗎,我的郵箱BEYONDMA@GMAIL.COM…

查看全部問答∨

求嵌入式硬件/軟件人才,工作地點:南京

硬件高級工程師: 1,精通DSP/ARM系統設計 2,有視頻類產品設計經驗者尤佳 3,兩年以上工作經驗 軟件高級工程師: 1,精通Linux或VxWorks 2,精通常用網絡協議 2,兩年以上工作經驗 聯系方式:gong2007001@gmail. ...…

查看全部問答∨

msp430f149的語音編碼解碼問題

undefined 我在做pwm實現語音解碼時,不知道該怎樣去實現,請問該如何解決阿,請問諸位大俠有沒有pwm實現語音解碼的程序提供?。勘救俗霎厴I設計,急用啊?。?!…

查看全部問答∨

64 位ubuntu 12.04 編譯exynos 4412 android 4.0.4 遇到的問題以及解決辦法

1、安裝過程中保證電腦是64 bit之外,還要開啟BIOS的VT 功能,很多電腦是默認關閉的 2、在安裝ubuntu 12.04 的過程中選上安裝系統時候更新,并且保證網絡穩定不斷線,速度要比較快,否則安裝過程中有斷線情況,會導致一些更新包沒有安裝,就連uboo ...…

查看全部問答∨

S5PV210 uboot fastboot_shutdown 干什么用的?

在S5PV210 fastboot 的代碼里面有 /* Cleans up the board specific fastboot */ void fastboot_shutdown(void) {         DBG0(\"\\n\");         /* when operation is done, usbd must be stopped ...…

查看全部問答∨

ADC_DAC基礎知識1

ADC和DAC基礎(第一部分) 本系列文章分為5個部分,第一部分介紹采樣的概念以及奈奎斯特(Nyquist)采樣準則。 第5部分同樣也說明了如何運用欠采樣和抗混疊濾波器。 By Walt Kester and James Bryant, Analog Devices   作者:Walt K ...…

查看全部問答∨

求電位器和輕觸按鈕的封裝資料或PcbLib

這兩種東西,標準尺寸,直插封裝.誰有呢,DXP 2004之后格式或者PDF封裝資料均可. …

查看全部問答∨

軟件測試經典資料大推薦(十一)---軟件性能測試過程詳解與案例剖析

軟件測試經典資料大推薦(十一)---軟件性能測試過程詳解與案例剖析 程序員之間流傳著這樣一句順口溜:有人喜歡創造世界,他們做了開發者;有的人喜歡開發者,他們做了測試員。 什么是軟件測試?軟件測試就是一場本該在用戶面前發生的災難提前在 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 泸溪县| 沅陵县| 上栗县| 连南| 安溪县| 南川市| 泰和县| 双桥区| 阿尔山市| 荆州市| 丹巴县| 盈江县| 板桥市| 沙田区| 彩票| 图们市| 通山县| 平顶山市| 饶平县| 德保县| 甘洛县| 建瓯市| 肥东县| 青冈县| 沁源县| 新晃| 荔浦县| 旌德县| 伊春市| 黑龙江省| 阿拉尔市| 随州市| 开鲁县| 西城区| 万山特区| 肇庆市| 临颍县| 建平县| 疏附县| 陆河县| 云霄县|