你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f030f4p6进入stop模式再次唤醒时钟变慢

[复制链接]
阳阳NO1 提问时间:2015-6-2 09:26 /
阅读主题, 点击返回1楼
收藏 评论21 发布时间:2015-6-2 09:26
21个回答
阳阳NO1 回答时间:2015-6-3 10:41:27
creep 发表于 2015-6-3 09:36
你感觉对就行。
我也是作为开关机按键使用的,感觉特别灵敏,无论开机关机都没有误操作过。 ...

能把你的代码给我参考下吗?非常感谢
creep 回答时间:2015-6-3 11:05:21
阳阳NO1 发表于 2015-6-3 10:41
能把你的代码给我参考下吗?非常感谢

你可以把你的代码贴出来让大家讨论下,外部中断唤不醒会不会是其他问题导致的外部中断没有发生。
阳阳NO1 回答时间:2015-6-3 16:02:50
creep 发表于 2015-6-3 11:05
你可以把你的代码贴出来让大家讨论下,外部中断唤不醒会不会是其他问题导致的外部中断没有发生。 ...

void EXTI0_1_IRQHandler(void)
{
    unsigned int i;
        for(i=0;i<200;i++);
        if(EXTI_GetITStatus(EXTI_Line0)!= RESET )
        {               
                if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0)
                     b_current_source = CURRENT_FORM_BAT;
                else
                     b_current_source = CURRENT_FORM_AC;

                b_current_has_change = 1;

                if(mcu_state == MCU_IS_STOP)   
                {
                        Wakeup_Form_Stop_Mode();
                }
                EXTI_ClearITPendingBit(EXTI_Line0);
        }               
        else if(EXTI_GetITStatus(EXTI_Line1)!= RESET )
        {                            
                EXTI_ClearITPendingBit(EXTI_Line1);
                if(mcu_state == MCU_IS_RUNNING)
                {
                        Enter_Stop_Mode();
                }
                else
                {
                    Wakeup_Form_Stop_Mode();
                }
        }
       
}

void  Enter_Stop_Mode(void)
{
           mcu_state = MCU_IS_STOP;
           sys_sleep_all();
           NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP,ENABLE);
           RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);                  
           PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
}

void Wakeup_Form_Stop_Mode(void)
{
           mcu_state = MCU_IS_RUNNING;
           SYSCLKConfig_STOP();
           PWM_For_Light_Start(10);                                           
           TIM16_For_Tick_Start();                                       
}
我还好是退回到最开始的那种做法了,不用定时器,按下按键进入中断,在中断里面判断当前芯片的状态,然后修改状态,执行相应的程序,这种做法休眠是进去了,但是休眠之后按此按键  还是唤醒不了芯片 PA0 PA1都唤醒不了,这个问题都困扰我三天了

creep 回答时间:2015-6-3 16:22:32
阳阳NO1 发表于 2015-6-3 16:02
void EXTI0_1_IRQHandler(void)
{
    unsigned int i;

使用这种方法一次也没有唤醒过吗?可不可以贴一下sys_sleep_all();的代码
阳阳NO1 回答时间:2015-6-3 16:36:03
void sys_sleep_all(void)
{   
        PWM_For_Light_Start(0);                                            /*关灯*/
        TIM16_For_Tick_Stop();                                                   /*关定时器*/
        red_light_switch_control(LIGHT_OFF);
        green_light_switch_control(LIGHT_OFF);
        yellow_light_switch_control(LIGHT_OFF);
}这种方法就是直接在中断函数里面调用上面几个函数。


我的第一种处理方式就是在main函数的while(1)里面直接调用
void MCU_State_Change(void)
{
    if(b_mcu_exti_has_intterrupt )   /*只在直流下起左右*/
    {
        b_mcu_exti_has_intterrupt = 0;
        if(mcu_state == MCU_IS_STOP)
                {                  
                   mcu_state = MCU_IS_RUNNING;
                   SYSCLKConfig_STOP();
                   PWM_For_Light_Start(10);                                                  /*开灯*/
                   TIM16_For_Tick_Start();                                                  /*开定时器*/
                }
                else if(mcu_state == MCU_IS_RUNNING)
                {                    
                    mcu_state = MCU_IS_STOP;
                    sys_sleep_all();
                        NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP,ENABLE);
                        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);                       
                        PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
                }
        }
}   


然后在中断函数里面使b_mcu_exti_has_intterrupt = 1;这种方式就是很多误动作,有时按几下才能进入stop

无帝老三 回答时间:2015-8-27 14:58:00
stop 不是可以保存寄存器和sram的内容吗?为什么还要在重新配置时钟?
请教大神,现在也需要做按键唤醒的实现
dxy0910 回答时间:2019-6-5 11:06:32
creep 发表于 2015-6-2 09:40
进入中断后时钟切换到内部8M时钟,唤醒后要重新配置系统时钟。

请问进入外部中断后是系统自动进入内部的8M时钟还是自己去设置的
,还有就是清除所有中断标志位后要恢复系统时钟再进入standby模式吗?
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版