初级会员

- 积分
- 72
- 金钱
- 72
- 注册时间
- 2011-9-15
- 在线时间
- 9 小时
|
发表于 2012-1-20 00:15:49
|
显示全部楼层
回复【3楼】李清界:
---------------------------------
呵呵。。我刚看这段程序的时候也很疑惑。。但是仔细看后明白了。。怎么说呢。。原子哥的这段程序挺巧妙的。。帮你说说吧,首先程序执行到WKUP_Init();进入该函数,
然后程序执行到“if(Check_WKUP()==0) Sys_Standby(); //不是开机,进入待机模式 ”这句话这时候就要判断你的按键是否按了三秒,如果不是,Check_WKUP()则会返回0.。if(Check_WKUP()==0)成立,则执行Sys_Standby();进入待命模式。。因此后面的中断优先级设置不执行。。既中断功能不会使能。。工作在待命模式。当wkup按下时。上升沿退出待命模式。。注意,这是程序并不进入中断函数!!而是从头继续执行。。到“if(Check_WKUP()==0) Sys_Standby(); //不是开机,进入待机模式 ”这句话,当按了3秒后。。Check_WKUP()=1.跳出if。。继续执行函数。。这次中断被使能。。然后执行while{}。。。估计看到这块你就明白了。。。最后就是。。wlup按下。。就进中断。。判断是否为3秒。。是就进入待命。。。不是就推出。。。就是这样。。。呵呵。。对着程序在自己理解下吧 |
|