日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]一 待機模式簡介 在stm32的低功耗模式中,待機模式可以實現(xiàn)系統(tǒng)的最低功耗,在這種模式下,只需要2uA左右的電流。三 待機喚醒程序分析實驗現(xiàn)象: 將程序下載到開發(fā)板上后,LED燈會不斷地亮滅,當按下KEY2鍵超過3s時,

一 待機模式簡介

在stm32的低功耗模式中,待機模式可以實現(xiàn)系統(tǒng)的最低功耗,在這種模式下,只需要2uA左右的電流。





三 待機喚醒程序分析

實驗現(xiàn)象:

將程序下載到開發(fā)板上后,LED燈會不斷地亮滅,當按下KEY2鍵超過3s時,LED燈滅,標志著單片機進入待機模式,再按下KEY1鍵,這時喚醒單片機,LED又開始不斷地亮滅亮滅。


程序中用到的一些宏定義


#definemacEXTI_GPIO_CLK(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO)

#definemacEXTI_GPIO_PORTGPIOC

#definemacEXTI_GPIO_PINGPIO_Pin_13

#definemacEXTI_SOURCE_PORTGPIO_PortSourceGPIOC

#definemacEXTI_SOURCE_PINGPIO_PinSource13

#definemacEXTI_LINEEXTI_Line13

#definemacEXTI_IRQEXTI15_10_IRQn

#definemacEXTI_INT_FUNCTIONEXTI15_10_IRQHandler




主函數(shù):


intmain(void)

{

/*configtheled*/

LED_GPIO_Config();

/*extilineconfig*/

EXTI_Pxy_Config();//初始化中斷函數(shù)

USARTx_Config();

if(PWR_GetFlagStatus(PWR_FLAG_WU)==SET)

{

printf("rn使能電源管理時鐘單元前的檢測,待機喚醒復位rn");

}

else

printf("rn使能電源管理時鐘單元前的檢測,上電復位rn");

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);

if(PWR_GetFlagStatus(PWR_FLAG_WU)==SET)

{

printf("rn使能后檢測,待機喚醒復位rn");

}

else

printf("rn使能后檢測,上電復位rn");

while(1)

{

LED1(ON);

Delay(0xFFFFF);

LED1(OFF);

LED2(ON);

Delay(0xFFFFF);

LED2(OFF);

LED3(ON);

Delay(0xFFFFF);

LED3(OFF);

}

}

分析:在主函數(shù)中,除了用到一些必要的初始化之外,就是while循環(huán),在while循環(huán)中點亮LED燈,唯一不太熟悉的是幾個printf語句,這里暫時不管,先看EXTI_Pxy_Config()函數(shù)。



EXTI_Pxy_Config()函數(shù)



voidEXTI_Pxy_Config(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

EXTI_InitTypeDefEXTI_InitStructure;

/*configtheextilineclockandAFIOclock*/

RCC_APB2PeriphClockCmd(macEXTI_GPIO_CLK,ENABLE);//開啟GPIO時鐘和AFIO時鐘

/*configtheNVIC*/

NVIC_Configuration();

/*EXTIlinegpioconfig*/

GPIO_InitStructure.GPIO_Pin=macEXTI_GPIO_PIN;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//配置為上拉輸入

GPIO_Init(macEXTI_GPIO_PORT,&GPIO_InitStructure);

/*EXTIlinemodeconfig*/

GPIO_EXTILineConfig(macEXTI_SOURCE_PORT,macEXTI_SOURCE_PIN);

EXTI_InitStructure.EXTI_Line=macEXTI_LINE;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;//設置為上升沿觸發(fā)中斷!??!,也就是當單片機檢測到按鍵的上升沿時進入中斷程序

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init(&EXTI_InitStructure);

}

分析:在EXTI_Pxy_Config()函數(shù)中,先進行了KEY2按鍵的初始化,注意KEY2按鍵并不是WKUP按鍵,一定要注意。然后將KEY2按鍵的IO口配置為EXTI中斷模式,上升沿觸發(fā),也就是說當KEY2按鍵被按下時就會觸發(fā)中斷。然后我們再分析當按鍵KEY2被按下時,執(zhí)行的相應中斷函數(shù)。



macEXTI_INT_FUNCTION()函數(shù)


///IO口線中斷,中斷口為PC13

voidmacEXTI_INT_FUNCTION(void)

{

if(EXTI_GetITStatus(macEXTI_LINE)!=RESET)//確保是否產(chǎn)生了EXTILine中斷

{

printf("rn進入EXTILine中斷rn");

//K2鍵長按進入待機模式

if(PWR_Check_Standby())//PWR_Check_Standby()函數(shù)是用來判斷按鍵時長的,如果按鍵時間長超過3S就返回1,否則返回0

{

//使能WKUP引腳的喚醒功能

PWR_WakeUpPinCmd(ENABLE);

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉