[DemoCode下载] 看门狗复位

[复制链接]
1063|6
 楼主| gejigeji521 发表于 2019-6-30 22:59 | 显示全部楼层 |阅读模式
本帖最后由 gejigeji521 于 2019-6-30 23:00 编辑
  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 Watch Dog as pure timer with 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. /************************************************************************************************************
  21. *    WDT interrupt sub-routine
  22. ************************************************************************************************************/
  23. void WDT_ISR (void)   interrupt 10
  24. {

  25.                                         //---------toggle GPIO1---------        
  26.                                                 clr_GPIO1;
  27.                                                 Timer2_Delay500us(5);
  28.                                                 set_GPIO1;
  29.                                                 Timer2_Delay500us(5);
  30.                                                 clr_GPIO1;
  31.                                                 Timer2_Delay500us(5);
  32.                                                 set_GPIO1;
  33.                                                 Timer2_Delay500us(5);
  34.                                         //---------end toggle GPIO2--------
  35.                 clr_WDTF;
  36.                 set_WDCLR;
  37. }

  38. /************************************************************************************************************
  39. *    Main function
  40. ************************************************************************************************************/
  41. void main (void)
  42. {
  43. /* Note
  44.   WDT timer base is LIRC 10Khz
  45. */
  46.    
  47.   Set_All_GPIO_Quasi_Mode;
  48.         
  49.                                                 clr_GPIO1;
  50.                                                 Timer0_Delay1ms(500);
  51.                                                 set_GPIO1;
  52.                                                 Timer0_Delay1ms(500);
  53.                                                 clr_GPIO1;
  54.                                                 Timer0_Delay1ms(500);
  55.                                                 set_GPIO1;
  56.                                                 Timer0_Delay1ms(500);
  57.         
  58. //WDT init
  59. //--------------------------------------------------------
  60. //Warning:
  61. //Pleaes always check CONFIG WDT disable first
  62. //only when WDT reset disable, WDT use as pure timer
  63. //--------------------------------------------------------
  64.           TA=0xAA;TA=0x55;WDCON=0x07;                  //Setting WDT prescale
  65.                 set_WDTR;                       //WDT run
  66.                 set_WDCLR;                                                                                        //Clear WDT timer
  67.                 set_EWDT;
  68.                 EA =1;

  69. #if 0
  70.     while(1);
  71. #else
  72.                 set_WIDPD;                                                                                         //WDT run in POWER DOWM mode setting if needed
  73.                 while (1)
  74.                 {
  75.                         set_PD;
  76.                                         //---------toggle GPIO1---------        
  77.                                                 clr_P04;
  78.                                                 Timer1_Delay10ms(5);
  79.                                                 set_P04;
  80.                                                 Timer1_Delay10ms(5);
  81.                                                 clr_P04;
  82.                                                 Timer1_Delay10ms(5);
  83.                                                 set_P04;
  84.                                                 Timer1_Delay10ms(5);
  85.                                         //---------end toggle GPIO1---------
  86.                 }
  87. #endif
  88. }


 楼主| gejigeji521 发表于 2019-6-30 22:59 | 显示全部楼层
发现BSP里面有两个例子,一个名字是看门狗定时器中断,一个是看门狗中断。
 楼主| gejigeji521 发表于 2019-6-30 23:01 | 显示全部楼层
本来是要上面的问题的,我又仔细看了一下, 是我看错了。。。
不过不删帖了,讨论一下看门狗复位
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2016 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   : May/02/2018
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 Watch Dog reste functiondemo 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. /***********************************************************************
  21.         WDT CONFIG enable
  22.         warning : this macro is only when ICP not enable CONFIG WDT function
  23.         copy this marco code to you code to enable WDT reset.
  24. ************************************************************************/
  25. void Check_WDT_Reset_Config(void)
  26. {
  27.                 set_IAPEN;
  28.                 IAPAL = 0x04;
  29.                 IAPAH = 0x00;       
  30.                 IAPFD = 0xFF;
  31.                 IAPCN = 0xC0;                                                //Read config command
  32.                 set_IAPGO;  
  33.                 if ((IAPFD&0xF0)==0xF0)
  34.                 {
  35.                                 IAPFD = 0x0F;
  36.                                 IAPCN = 0xE1;
  37.         set_IAPGO;                                                                         //trigger IAP
  38.                                 while((CHPCON&SET_BIT6)==SET_BIT6);          //check IAPFF (CHPCON.6)
  39.                                 clr_CFUEN;
  40.                                 clr_IAPEN;
  41.                                 EA = 0;
  42.                                 TA = 0xAA;
  43.                                 TA = 0x55;
  44.                                 CHPCON &= 0xFD;
  45.                                 TA = 0xAA;
  46.                                 TA = 0x55;
  47.                                 CHPCON |= 0x80;
  48.                 }
  49.                 clr_IAPEN;
  50. }


  51. /************************************************************************************************************
  52. *    Main function
  53. ************************************************************************************************************/
  54. void main (void)
  55. {

  56.   Set_All_GPIO_Quasi_Mode;
  57. //        CKDIV = 0X01;
  58.         clr_GPIO1;
  59. //        Timer0_Delay1ms(1);                                        //toggle I/O to show MCU Reset
  60.         set_GPIO1;

  61.        
  62. //----------------------------------------------------------------------------------------------
  63. // WDT Init !!! ENABLE CONFIG WDT FIRST !!!
  64. // Warning:
  65. // Always check CONFIG WDT enable first, CONFIG not enable, SFR can't enable WDT reset
  66. // Please call Enable_WDT_Reset_Config() function to enable CONFIG WDT reset
  67. //----------------------------------------------------------------------------------------------
  68.                 Check_WDT_Reset_Config();
  69.        
  70.           TA=0xAA;TA=0x55;WDCON|=0x07;                                                //Setting WDT prescale
  71.                 set_WDCLR;                                                                                                                //Clear WDT timer
  72.                 while((WDCON|~SET_BIT6)==0xFF);                                //confirm WDT clear is ok before into power down mode
  73. //                EA = 1;
  74.                 set_WDTR;                                                                                                                        //WDT run
  75. //               
  76.     while(1)
  77.                 {
  78.                         clr_P05;
  79.                         Timer0_Delay1ms(1);
  80.                         set_P05;
  81.                         Timer0_Delay1ms(1);
  82.                         clr_P05;
  83.                         Timer0_Delay1ms(1);
  84.                         set_P05;
  85.                         Timer0_Delay1ms(1);
  86.                         clr_P05;
  87.                         set_PD;
  88.                 }
  89. }

zhuomuniao110 发表于 2019-7-22 13:31 | 显示全部楼层
看门狗复位,是超时吗
zhuomuniao110 发表于 2019-7-22 13:33 | 显示全部楼层
看门狗定时器也可以独立用
xuanhuanzi 发表于 2019-7-23 11:33 | 显示全部楼层
确实可以,跑一个试试
xinxianshi 发表于 2019-7-23 21:56 | 显示全部楼层
比较好用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

2465

帖子

8

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