OpenEdv-开源电子网

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

待机唤醒实验的两个小问题问下原子

[复制链接]

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2012-7-30 16:35:40 | 显示全部楼层 |阅读模式

1.    在中断服务函数里
            void EXTI0_IRQHandler(void)
            {                
            EXTI->R=1<<0;  //清除LINE10上的中断标志位  
            if(Check_WKUP())//关机?
            {  
            Sys_Enter_Standby();  
            }
            }
    这里只有一个进入待机模式的函数,那是怎么实现退出待机模式的呢?
2.猜测1,程序一开始进入待机模式,当按下WAKEUP时会进入中断,此时应该已经唤醒了,也就是不用长按3秒也可以唤醒,在文档中是说按住3秒才可以退出待机模式,这个疑问怎么说呢?

3.关于
void Sys_Enter_Standby(void)
{  
//关闭所有外设(根据实际情况写)
    RCC->APB2RSTR|=0X01FC;//复位所有IO口
Sys_Standby();//进入待机模式
}
这个函数和Sys_Standby();相比多了一句复位IO口的,这句话有什么作用呢?是不是待机模式下,IO口仍可以输出电平,只是不能根据程序的需要进行电平变化了?
4。猜测2.在唤醒之后,程序要从main函数从头执行,那么这样就能解释为什么短按WAKEUP不会唤醒,但是这个猜测也有一个问题,就是唯一的高电平唤醒,在长按后又进入待机状态。即使我按住3秒,也不会唤醒,因为中断服务函数和main中的WKUP_Init(void);都是进入待机模式。


问了这么些问题,还请原子指点一下、







互联网,智能设备爱好者,欢迎讨论任何有意思的想法。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-7-30 17:36:19 | 显示全部楼层
回复【楼主位】shibusha:
---------------------------------
1,待机模式唤醒是由WK_UP唤醒的,这个唤醒就是一次重启.
2,唤醒之后,第一次是不会进入中断的,直接运行代码,但是在启动的时候,我有一个检查Check_WKUP,来判断是不是3秒开机.所以需要3秒长按才能开机.你不想要的话,去掉即可.
3,降低功耗.
4,猜测,可以通过实践检验.  事实总是不会骗人的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
 楼主| 发表于 2012-7-30 17:40:15 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
哦,明白了,也就是说如果不复位IO口的话,这些IO在待机模式下,还会工作,只是这个工作输出的电平是不变化了,因为CPU已经断电、
互联网,智能设备爱好者,欢迎讨论任何有意思的想法。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 01:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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