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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版