OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2336|回复: 2

中断唤醒后不会进入待机模式了

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2018-12-7
在线时间
5 小时
发表于 2018-12-25 12:54:08 | 显示全部楼层 |阅读模式
1金钱
就是按照原子哥的待机唤醒程序
现在是上电进入待机了
按键3s进入正常模式,然后再按键会迅速复位进入正常模式,不知道什么原因

void Wkup_Init(void)
  {   
        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
          GPIO_InitTypeDef GPIO_InitStruct;
        
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA,ENABLE);
        

        
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;      
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStruct.GPIO_Pin  = KEY0_PIN;
    GPIO_Init(KEY0,&GPIO_InitStruct);
   
   

   
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
            
     
            
       EXTI_InitStructure.EXTI_Line = EXTI_Line0; //PA0        
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
        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 = 0;
         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   
         NVIC_Init(&NVIC_InitStructure);   
                                            
    }      

   



   void EXTI0_IRQHandler(void)
  {                                                         
      EXTI_ClearITPendingBit(EXTI_Line0);
      if(Check_up())
      {         
          Sys_Enter_Standby();  
      }
}

void Sys_Standby(void) //
{   
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
   PWR_WakeUpPinCmd(ENABLE);
   PWR_EnterSTANDBYMode();        
}
void Sys_Enter_Standby(void)//
{            
    RCC_APB2PeriphResetCmd(0X01FC,DISABLE);    //
    Sys_Standby();
}

u8 Check_up(void)
{
      u8 t = 0;
      u8 tx = 0;
   
      while(1)
        {
       if( GPIO_ReadInputDataBit(KEY0,KEY0_PIN)== 1) //
        
             {
                  t++;
                  tx = 0;
               }
             else
             {
                 tx++;
                  if(tx > 3)
                    {
                    
                        return 0;      //????????????
                    }                        
             }
             delay_ms(30);
             if(t > 100)       //100*30ms = 3s
               {               
                   return 1;// 3s
                }
   
                }   
      
}
int main(void)
{
    u8 i;
    Clock_Init();
   NVIC_Configuration();// nvic 分组4
    delay_init();
    LED_Init();
Wkup_Init();
         

    if(Check_up() == 0)   //
        {  Sys_Standby(); }     
while(1);
}


最佳答案

查看完整内容[请看2#楼]

说明你没有完全按我们的代码来移植、
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-12-25 12:54:09 | 显示全部楼层
说明你没有完全按我们的代码来移植、
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2018-12-7
在线时间
5 小时
 楼主| 发表于 2018-12-26 16:38:32 | 显示全部楼层
解决了,原来是显示屏刷新的问题,其实开关机都没问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 23:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表