[DemoCode下载] 看门狗定时器做中断定时器使用

[复制链接]
730|2
 楼主| huangcunxiake 发表于 2019-6-30 22:47 | 显示全部楼层 |阅读模式
  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. }


 楼主| huangcunxiake 发表于 2019-6-30 22:48 | 显示全部楼层
没想到吧,看门狗定时器其实还可以作为一个普通的中断定时器使用,因为看门狗定时器非常特别,所以可以有其他定时器做不到的效果。
 楼主| huangcunxiake 发表于 2019-6-30 22:48 | 显示全部楼层
那就是使用低频时钟作为时钟源。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

223

主题

3745

帖子

11

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