
进入停机模式 第一次可以唤醒 处理完一些数据 又让他进入停机模式 第二次就唤醒不了了 外部中断唤醒引脚配置如下: void EXTI_Key_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /* config the extiline(PE4) clock and AFIO clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO,ENABLE); /* EXTI line gpio config(PE4) */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // ÉÏÀÊäÈë GPIO_Init(GPIOE, &GPIO_InitStructure); /* EXTI line(PE4) mode config */ GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource4); EXTI_ClearITPendingBit(EXTI_Line4); EXTI_InitStructure.EXTI_Line = EXTI_Line4; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //ϽµÑØÖÐ¶Ï EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); EXTI_ClearITPendingBit(EXTI_Line4); } 进入停止模式的代码如下: RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI); 唤醒函数如下: void EXTI4_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line4) != RESET) //È·±£ÊÇ·ñ²úÉúÁËEXTI LineÖÐ¶Ï { SYSCLKConfig_STOP(); //Í£»ú»½ÐѺóÐèÒªÆô¶¯HSE // SystemInit(); WorkStatusLED_ON; //µãÁÁËùÓÐLEDÒ»¶Îʱ¼äָʾͣ»ú»½ÐÑ Delayms(100); WorkStatusLED_OFF; Delayms(100); WorkStatusLED_ON; //µãÁÁËùÓÐLEDÒ»¶Îʱ¼äָʾͣ»ú»½ÐÑ Delayms(100); WorkStatusLED_OFF; Delayms(100); WorkStatusLED_ON; //µãÁÁËùÓÐLEDÒ»¶Îʱ¼äָʾͣ»ú»½ÐÑ Delayms(100); WorkStatusLED_OFF; Delayms(100); WorkStatusLED_ON; //µãÁÁËùÓÐLEDÒ»¶Îʱ¼äָʾͣ»ú»½ÐÑ Delayms(100); WorkStatusLED_OFF; EXTI_ClearITPendingBit(EXTI_Line4); //Çå³ýÖжϱê־λ /* ʹÄܵçÔ´¹ÜÀíµ¥ÔªµÄʱÖÓ */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); /* ½øÈëֹͣģʽ£¬ÉèÖõçѹµ÷½ÚÆ÷ΪµÍ¹¦ºÄģʽ£¬µÈ´ýÖжϻ½ÐÑ*/ PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI); } } void SYSCLKConfig_STOP(void) { ErrorStatus HSEStartUpStatus; /* ʹÄÜ HSE */ RCC_HSEConfig(RCC_HSE_ON); /* µÈ´ý HSE ×¼±¸¾ÍÐ÷ */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { /* ʹÄÜ PLL */ RCC_PLLCmd(ENABLE); /* µÈ´ý PLL ×¼±¸¾ÍÐ÷ */ while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } /* Ñ¡ÔñPLL×÷ΪϵͳʱÖÓÔ´ */ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* µÈ´ýPLL±»Ñ¡ÔñΪϵͳʱÖÓÔ´ */ while(RCC_GetSYSCLKSource() != 0x08) { } } } 时钟配置函数参考的是野火的例程 |
STM32F105 USB HID RCC設定
STM32F103VCT6单片机的复位引脚和地引脚短路
【官方例程】STM32F107以太网官方例程
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
评分
查看全部评分
楼主可以自己验证下啊