硬汉嵌入式论坛

 找回密码
 立即注册
查看: 408|回复: 6
收起左侧

[有问必答] 请问各位大佬,f407在进入待机模式后,从数字电源上看偶尔电流会是20mA(正常接近于0)

[复制链接]

15

主题

23

回帖

68

积分

初级会员

积分
68
发表于 2023-12-15 13:09:49 | 显示全部楼层 |阅读模式
//系统进入待机模式
void Sys_Enter_Standby(void)
{
    __HAL_RCC_AHB1_FORCE_RESET();       //复位所有IO口
        __HAL_RCC_PWR_CLK_ENABLE();         //使能PWR时钟
//    __HAL_RCC_BACKUPRESET_FORCE();      //复位备份区域
    HAL_PWR_EnableBkUpAccess();         //后备区域访问使能  
       
        //STM32F4,当开启了RTC相关中断后,必须先关闭RTC中断,再清中断标志位,然后重新设置
        //RTC中断,再进入待机模式才可以正常唤醒,否则会有问题.       
//    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
//    __HAL_RTC_WRITEPROTECTION_DISABLE(&RTC_Handler);//关闭RTC写保护
//   
    //关闭RTC相关中断,可能在RTC实验打开了
//    __HAL_RTC_WAKEUPTIMER_DISABLE_IT(&RTC_Handler,RTC_IT_WUT);
//    __HAL_RTC_TIMESTAMP_DISABLE_IT(&RTC_Handler,RTC_IT_TS);
//    __HAL_RTC_ALARM_DISABLE_IT(&RTC_Handler,RTC_IT_ALRA|RTC_IT_ALRB);

    //清除RTC相关中断标志位
    __HAL_RTC_ALARM_CLEAR_FLAG(&RTC_Handler,RTC_FLAG_ALRAF|RTC_FLAG_ALRBF);
    __HAL_RTC_TIMESTAMP_CLEAR_FLAG(&RTC_Handler,RTC_FLAG_TSF);
    __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&RTC_Handler,RTC_FLAG_WUTF);

//    __HAL_RCC_BACKUPRESET_RELEASE();                    //备份区域复位结束
    __HAL_RTC_WRITEPROTECTION_ENABLE(&RTC_Handler);     //使能RTC写保护
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);                  //清除Wake_UP标志
       
               
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);           //设置WKUP用于唤醒
    HAL_PWR_EnterSTANDBYMode();                         //进入待机模式     
}

请各位大佬指点一下

回复

使用道具 举报

15

主题

23

回帖

68

积分

初级会员

积分
68
 楼主| 发表于 2023-12-15 13:48:59 | 显示全部楼层
这个现象在进入待机模式下,立即唤醒,然后再进入待机就会复现
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107313
QQ
发表于 2023-12-15 14:51:52 | 显示全部楼层
l4568527193 发表于 2023-12-15 13:48
这个现象在进入待机模式下,立即唤醒,然后再进入待机就会复现

1、看下是不是板载其它外设影响。
2、所有引脚在进入低功耗模式前都配置相应模式没。
3、注意调试引脚,也要适当配置下。
回复

使用道具 举报

15

主题

23

回帖

68

积分

初级会员

积分
68
 楼主| 发表于 2023-12-15 18:08:09 | 显示全部楼层
eric2013 发表于 2023-12-15 14:51
1、看下是不是板载其它外设影响。
2、所有引脚在进入低功耗模式前都配置相应模式没。
3、注意调试引脚 ...

如果是板载其他外设或者IO引起的,那么这个现象会每次都复现吧,现在大概率都会变成0,但是只是偶尔会出现20mA的情况,通过调试,我发现把所有IO复位,也就是__HAL_RCC_AHB1_FORCE_RESET();       //复位所有IO口 以后,电流就是20mA,然后进入待机模式,这20就会变成0,我在怀疑是不是没有成功进入这个模式?
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2023-12-16 08:26:28 | 显示全部楼层
l4568527193 发表于 2023-12-15 18:08
如果是板载其他外设或者IO引起的,那么这个现象会每次都复现吧,现在大概率都会变成0,但是只是偶尔会出 ...

有几种方法从待机模式退出,你看看是不是设置了?RTC,PA0,PC13.
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2023-12-16 08:27:47 | 显示全部楼层
l4568527193 发表于 2023-12-15 18:08
如果是板载其他外设或者IO引起的,那么这个现象会每次都复现吧,现在大概率都会变成0,但是只是偶尔会出 ...

HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);           //设置WKUP用于唤醒,
PA0下拉,默认低电平。
回复

使用道具 举报

15

主题

23

回帖

68

积分

初级会员

积分
68
 楼主| 发表于 2023-12-16 13:11:08 | 显示全部楼层
hqgboy 发表于 2023-12-16 08:27
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);           //设置WKUP用于唤醒,
PA0下拉,默认低电平。

是的,也会出现这个现象
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-25 15:58 , Processed in 0.275832 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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