[技术问答] N76E003 IO口唤醒问题,有累计唤醒次数限制?

[复制链接]
3266|10
 楼主| zuiainideren 发表于 2018-5-24 13:46 | 显示全部楼层 |阅读模式
使用N76E003开发一个方案,使用 P03做按键高电平唤醒,IO口外部用有100k下拉。 通过按键唤醒,处理后重新进入休眠,没有打开看门狗,以省电。 现发现按键唤醒,当唤醒次数达到60次左右, 再也无法唤醒,IO口电平有上拉,但再也无法唤醒,只能断电或者复位。 这问题有遇到么?如何解决?
 楼主| zuiainideren 发表于 2018-5-24 13:47 | 显示全部楼层
自己顶下帖
ayb_ice 发表于 2018-5-24 14:00 | 显示全部楼层
为什么不能唤醒呢,肯定是程序自身原因,或电平不正确
xinpian101 发表于 2018-5-24 15:36 | 显示全部楼层
没限制。这个怎么会有限制。
xinpian101 发表于 2018-5-24 17:03 | 显示全部楼层
自己写的程序还是官方的例子。
xinpian101 发表于 2018-5-24 17:06 | 显示全部楼层
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2017
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 wake up timer interrupt demo code
  14. //***********************************************************************************************************
  15. #include "N76E003.h"
  16. #include "Common.h"
  17. #include "Delay.h"
  18. #include "SFR_Macro.h"
  19. #include "Function_define.h"

  20. void WakeUp_Timer_ISR (void)   interrupt 17     //ISR for self wake-up timer
  21. {
  22.                 clr_GPIO1;
  23.                 Timer1_Delay10ms(5);
  24.                 set_GPIO1;
  25.                 Timer1_Delay10ms(5);
  26.                 clr_GPIO1;
  27.                 Timer1_Delay10ms(5);
  28.                 set_GPIO1;
  29.           clr_WKTF;                                               //clear interrupt flag   
  30. }


  31. /************************************************************************************************************
  32. *    Main function
  33. ************************************************************************************************************/
  34. void main (void)
  35. {
  36.    
  37.     P12_PushPull_Mode;

  38.                 clr_GPIO1;
  39.                 Timer0_Delay1ms(400);
  40.                 set_GPIO1;
  41.                 Timer0_Delay1ms(400);
  42.                 clr_GPIO1;
  43.                 Timer0_Delay1ms(400);
  44.                 set_GPIO1;
  45.                 Timer0_Delay1ms(400);
  46.                 clr_GPIO1;
  47.                 Timer0_Delay1ms(400);
  48.                 set_GPIO1;

  49. //-----------------------------------------------------
  50. //        WKT initial        
  51. //-----------------------------------------------------       
  52.                 WKCON = 0x02;                                                                                 //timer base 10k, Pre-scale = 1/16
  53. //                RWK = 0XFF;                                                                                        //        if prescale is 0x00, never set RWK = 0xff
  54.                 RWK = 0X00;
  55.           set_EWKT;                                                                                                        // enable WKT interrupt
  56.                 set_WKTR;                                                                                                 // Wake-up timer run
  57.                 EA = 1;
  58.        
  59.                 while(1);
  60. }

xinpian101 发表于 2018-5-24 17:10 | 显示全部楼层
有两种方法可以中止空闲模式,方法一、任何使能的中断发生都可以使系统退出空闲模式。中断发生自动清零IDL位,中止空闲模式,且将执行中断源对应的中断服务程序(ISR),直到执行RETI返指令,返回后立即执行使CPU进入空闲模式的指令,使CPU进入空闲模式。第二种方法是除软件复位外的所有复位,如果看门狗复位用来中止空闲模式,WIDPD (WDCON.4)需要设置为1,让WDT在空闲模式下继续运行。
xinpian101 发表于 2018-5-24 17:11 | 显示全部楼层
参考这个定时器中断唤醒的,反正什么中断都行。
Harvard 发表于 2018-5-25 11:40 | 显示全部楼层
应该没有吧
wanduzi 发表于 2018-5-25 23:21 | 显示全部楼层
没有,怎么会有这种事。
wahahaheihei 发表于 2018-5-27 14:24 | 显示全部楼层
没有,是不是有中断标志没有被清。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部