发新帖我要提问
12
返回列表
打印
[STM32F1]

STM32F103跳过进入停止模式

[复制链接]
楼主: dingy
手机看帖
扫描二维码
随时随地手机跟帖
21
chuxh| | 2021-5-7 22:33 | 只看该作者 回帖奖励 |倒序浏览
否则停止模式的进入流程将会被跳过,程序继续运行。

使用特权

评论回复
22
dingy|  楼主 | 2021-5-7 22:35 | 只看该作者
这个我当时加了也还是不正常,最后我把systick关了之后,就ok了,你可以去试试

使用特权

评论回复
23
dengdc| | 2021-5-7 22:37 | 只看该作者

    RCC_DeInit();
    TIM_DeInit(TIM3);
    TIM_DeInit(TIM1);
    ADC_DeInit(ADC1);
    USART_DeInit(USART1);
    GPIO_DeInit(GPIOA);
    GPIO_DeInit(GPIOB);
    GPIO_DeInit(GPIOC);
    DMA_DeInit(DMA1_Channel1);        
    DMA_DeInit(DMA1_Channel5);
   
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,DISABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,DISABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,DISABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, DISABLE);
    EXTI_ClearITPendingBit(0x7ffff);
    RTC_ClearITPendingBit(0x07);
    PWR_WakeUpPinCmd(ENABLE);            
    PWR_EnterSTANDBYMode();
    __WFI();
我都写成这了,还不行。真奇怪。我的systick根本就没有用。

使用特权

评论回复
24
huangchui| | 2021-5-7 22:39 | 只看该作者

遇到同样的问题。求解

使用特权

评论回复
25
zhenykun| | 2021-5-7 22:42 | 只看该作者
我刚开始也是碰到问题,进入STOP模式后电流30mA。而且只能进入一次STOP模式,后来重新焊接一块板,一个一个外围增加,每增加一个外围测一次电流,最后把电流降到6.9uA,只能进入一次STOP模式是因为外部中断没有清掉。

使用特权

评论回复
26
zhenykun| | 2021-5-7 22:44 | 只看该作者
我刚开始也是碰到问题,进入STOP模式后电流30mA。而且只能进入一次STOP模式,后来重新焊接一块板,一个一个ww增加,每增加一个外围测一次电流,最后把电流降到6.9uA,只能进入一次STOP模式是因为外部中断没有清掉。

使用特权

评论回复
27
zhenykun| | 2021-5-7 22:44 | 只看该作者
我刚开始也是碰到问题,进入STOP模式后电流30mA。而且只能进入一次STOP模式,后来重新焊接一块板,一个一个WW增加,每增加一个WW测一次电流,最后把电流降到6.9uA,只能进入一次STOP模式是因为外部中断没有清掉。

使用特权

评论回复
28
zhenykun| | 2021-5-7 22:47 | 只看该作者
目前还在调试阶段我没有开启RTC,电流也能降到6.9uA而且其他WW在低功耗时也是有几uA电流的

使用特权

评论回复
29
juventus9554| | 2021-5-7 22:51 | 只看该作者
在外部中断函数中清除中断标志

使用特权

评论回复
30
renyaq| | 2021-5-7 22:53 | 只看该作者
我也遇到过这个问题
解决方法是 清除中断标志
我的设备有一个中断 是可以关闭的, 但是io口状态变化时还是可以产生中断标志,
所以在睡眠前要清除干净

使用特权

评论回复
31
renyaq| | 2021-5-7 22:55 | 只看该作者

                                        __HAL_RCC_GPIOA_CLK_DISABLE();
                                        __HAL_RCC_GPIOB_CLK_DISABLE();
                        
                                        HAL_NVIC_DisableIRQ(EXTI9_5_IRQn);

                                        while (__HAL_GPIO_EXTI_GET_FLAG(GPIO_PIN_6))
                                                        __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_6);

                                        /* Enter STOP 1 mode */
                                        HAL_PWREx_EnterSTOP1Mode(PWR_STOPENTRY_WFI);

使用特权

评论回复
32
lizye| | 2021-5-7 22:59 | 只看该作者
如果确认清除了所有 IT PENDING FLAG.还有一个终极手段:
在进STOP函数前加SysTick->CTRL  = 0; 关TICKER中断
在唤醒中断中首先SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;   
开启TICKER.这个TICKER是所有的库函数必需使用的,除非所有代码你自己写。

使用特权

评论回复
33
dingy|  楼主 | 2021-5-7 23:02 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
34
嵌入小菜菜| | 2021-5-7 23:13 | 只看该作者
指针跑飞了吧?

使用特权

评论回复
35
paotangsan| | 2021-6-2 09:18 | 只看该作者
还需要清除别的吗

使用特权

评论回复
36
renzheshengui| | 2021-6-2 09:19 | 只看该作者
滴答时钟是必须要关掉的吗

使用特权

评论回复
37
wakayi| | 2021-6-2 09:22 | 只看该作者
有关闭的顺序要求吗

使用特权

评论回复
38
wowu| | 2021-6-2 09:25 | 只看该作者
能关掉的都关掉

使用特权

评论回复
39
xiaoqizi| | 2021-6-2 09:26 | 只看该作者
长知识了 以后 一定要注意啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则