OpenEdv-开源电子网

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

待机状态与唤醒状态检测

[复制链接]

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
发表于 2017-9-14 12:03:29 | 显示全部楼层 |阅读模式
2金钱
用单片机的一个引脚检测充电器是否插入,如果在唤醒状态下,显示充电界面在左上角;如果处于待机状态就将电池充电界面显示在液晶屏幕的中间。现在问题是不知道在什么状态下插入的充电器。其中CHG是电源线。电阻阻值改为3.3k和4.7k了。求大神指导一下。
QAS[$(3}DS6T(NS(SEV(JHW.png

最佳答案

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

这个肯定可以的,我用停机模式配合充电芯片引脚进行外部中断唤醒,我们的产品就是你说的这种显示方式。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1085
金钱
1085
注册时间
2015-5-22
在线时间
607 小时
发表于 2017-9-14 12:03:30 | 显示全部楼层
魏状状 发表于 2017-9-14 13:48
第一条可以实现由开机到关机这个过程中检测是否插电,但是在待机的时候插电就不行了。为什么手机就能实现 ...

这个肯定可以的,我用停机模式配合充电芯片引脚进行外部中断唤醒,我们的产品就是你说的这种显示方式。
回复

使用道具 举报

3

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1085
金钱
1085
注册时间
2015-5-22
在线时间
607 小时
发表于 2017-9-14 12:40:37 | 显示全部楼层
本帖最后由 ADS1993 于 2017-9-14 12:43 编辑

仅供参考:假设 高电平为 充电器插入
A.开机状态下 定时检测  引脚状态,
B.待机状态下,把该引脚设置为外部中断唤醒引脚,有充电器插入唤醒执行相应程序
C.充电状态下 待机转开机,开机转待机  通过标志位判断即可。
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-9-14 13:14:14 | 显示全部楼层
ADS1993 发表于 2017-9-14 12:40
仅供参考:假设 高电平为 充电器插入
A.开机状态下 定时检测  引脚状态,
B.待机状态下,把该引脚设置为 ...

B项,可以设置为外部中断,但是无法唤醒吧?因为只能通过PA0进行唤醒。但是PA0也就是电路图中的MENU是与之连接的。充电器插上就唤醒了。
C项,也设置了一个标志位,待机为0,唤醒时候为1.但是在待机下充电就唤醒了就又变为1了。
回复

使用道具 举报

3

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1085
金钱
1085
注册时间
2015-5-22
在线时间
607 小时
发表于 2017-9-14 13:20:23 | 显示全部楼层
本帖最后由 ADS1993 于 2017-9-14 13:25 编辑
魏状状 发表于 2017-9-14 13:14
B项,可以设置为外部中断,但是无法唤醒吧?因为只能通过PA0进行唤醒。但是PA0也就是电路图中的MENU是与 ...

对  只有 停机模式才可以任意中断唤醒,
要注意   在待机模式下  外部中断不可用 捕获.PNG
这里说的 是上升沿唤醒

1.充电时  开机转待机  可以设置标志位,这个肯定没问题,
2.充电时, 待机转开机 不需要 标志位,软复位一下就可以;
这个标志位应该是判断充电状态的,
还有就是 你要区分是充电唤醒还是按键唤醒

我使用停机模式,这个比较方便,停机功耗只有15uA  
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-9-14 13:24:38 | 显示全部楼层
ADS1993 发表于 2017-9-14 13:20
对  只有 停机模式才可以任意中断唤醒,
要注意   在待机模式下  外部中断不可用
这里说的 是上升沿唤 ...

1.可以设置标志位,但是我要在待机条件下没法检测标志位啊。2充电时候,待机转开机,复位也没用啊,程序又从头开始了,需要的是进入另一个子程序。就是没办法进入。
回复

使用道具 举报

3

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1085
金钱
1085
注册时间
2015-5-22
在线时间
607 小时
发表于 2017-9-14 13:30:28 | 显示全部楼层
魏状状 发表于 2017-9-14 13:24
1.可以设置标志位,但是我要在待机条件下没法检测标志位啊。2充电时候,待机转开机,复位也没用啊,程序 ...

1.你进入待机状态之前就要检测标志位,如果是在充电,其实就是进入一个伪待机模式,只是显示一个充电画面(待机模式肯定不能执行显示动态充电界面吧),只有检测到充电器拔下才可以进入待机模式。
2.唤醒之后是继续执行后面程序的,你唤醒之后就判断 是不是 充电唤醒(可能需要其他引脚配合)就可以
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-9-14 13:38:30 | 显示全部楼层
ADS1993 发表于 2017-9-14 13:30
1.你进入待机状态之前就要检测标志位,如果是在充电,其实就是进入一个伪待机模式,只是显示一个充电画面 ...

问题就在第二条,难度也在这,就是充电唤醒(已经运行了)对应一个界面,和运行时候充电对应一二个界面,感觉两者差不多。但是不一样。说白了要是知道在充电之前时候,单片机处在什么模式下就行了(运行时候好说一个数开始是0,运行变为1.,但是待机就没法弄了),最后都得唤醒。
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-9-14 13:46:59 | 显示全部楼层
魏状状 发表于 2017-9-14 13:38
问题就在第二条,难度也在这,就是充电唤醒(已经运行了)对应一个界面,和运行时候充电对应一二个界面, ...

第一条可以实现开机到关机的过程中插电检测,但是等到真正待机后我在插电就不行了
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-9-14 13:48:32 | 显示全部楼层
ADS1993 发表于 2017-9-14 13:30
1.你进入待机状态之前就要检测标志位,如果是在充电,其实就是进入一个伪待机模式,只是显示一个充电画面 ...

第一条可以实现由开机到关机这个过程中检测是否插电,但是在待机的时候插电就不行了。为什么手机就能实现这个功能呢,手机上这个问题是怎么解决的呢,我也百度了,但是暂时没有找到解决的办法。
回复

使用道具 举报

3

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1085
金钱
1085
注册时间
2015-5-22
在线时间
607 小时
发表于 2017-9-14 13:48:37 | 显示全部楼层
魏状状 发表于 2017-9-14 13:38
问题就在第二条,难度也在这,就是充电唤醒(已经运行了)对应一个界面,和运行时候充电对应一二个界面, ...

关键问题就在于 你是有两个 唤醒条件 加在了 PA0 ;  
看原理图  你可以用  PB3  和 PB4  来判断 是哪个唤醒了  CPU;
你可以在唤醒之后  根据  这两个引脚状态 做 一个条件跳转;
待机状态下,你肯定需要唤醒才能执行操作 。
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-9-14 13:52:39 | 显示全部楼层
ADS1993 发表于 2017-9-14 13:50
这个肯定可以的,我用停机模式配合充电芯片引脚进行外部中断唤醒,我们的产品就是你说的这种显示方式。

那看来待机模式是无法实现了,我是在别人代码的基础上改的,可能因为待机省电的缘故,我和他沟通下看看能不能改,但是功耗肯定增加了。
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-9-14 14:03:09 | 显示全部楼层
ADS1993 发表于 2017-9-14 13:48
关键问题就在于 你是有两个 唤醒条件 加在了 PA0 ;  
看原理图  你可以用  PB3  和 PB4  来判断 是哪个 ...

非常感谢您的帮助,祝你工作顺利,天天开心,好人一生平安(我同学总说的一句话)。
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-9-15 00:07:43 | 显示全部楼层
ADS1993 发表于 2017-9-14 13:48
关键问题就在于 你是有两个 唤醒条件 加在了 PA0 ;  
看原理图  你可以用  PB3  和 PB4  来判断 是哪个 ...

解决了。最后的结果希望能帮到遇到同样问题的童鞋。        if((CHARGE == 1))
        {
                                                          //检测在待机状态下是否由充电引起的唤醒
         
                 POWER = 1;
                 LCD_RST = 0;
                 LCD_RST = 1;
                 LCD_Init();
               
                for(j=0;j<2;j++)        //进入充电界面两次
                {
                       
                        Charge_Page();

                        if(j==2)                //两次之后继续进入休眠状态
                        {
                                Sys_Enter_Standby();
                        }
                }

                                                                                 
   }
                                                         //检测在待机状态下是否由按键引起的唤醒///按下menu_PRES进入的状态

后面是另一种状态接着来就行(略)
//显示充电界面
void Charge_Page(void)
{
        u16 i,j,k;
        LCD_Clear(BLACK);         
         LCD_Fill(200,150,600,350,WHITE);
        LCD_Fill(600,230,620,270,BLUE);
     LCD_Border(196,146,604,354,8,BLUE);       
         
        for(k=0;k<400;k++)
        {
                LCD_Fill(200,150,200+k,350,GREEN);
                if(CHARGE == 0) Sys_Enter_Standby();
                if(KEY_Scan(0) == MENU_PRES)break;
       
        }
}
回复

使用道具 举报

3

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1085
金钱
1085
注册时间
2015-5-22
在线时间
607 小时
发表于 2017-9-15 08:53:26 | 显示全部楼层
魏状状 发表于 2017-9-15 00:07
解决了。最后的结果希望能帮到遇到同样问题的童鞋。        if((CHARGE == 1))
        {
                                                          //检测在待机状态 ...

恭喜恭喜
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 16:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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