[技术问答] 关于N76E003 WDT RESET的例程

[复制链接]
3499|19
 楼主| hk386 发表于 2018-4-14 11:03 | 显示全部楼层 |阅读模式
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"

/***********************************************************************
        WDT CONFIG enable
        warning : this macro is only when ICP not enable CONFIG WDT function
        copy this marco code to you code to enable WDT reset.
************************************************************************/
void Enable_WDT_Reset_Config(void)
{
          set_IAPEN;
    IAPAL = 0x04;
    IAPAH = 0x00;          //CONFIG4地址是0004H
    IAPFD = 0x0F;         //数据写入IAPFD,CONFIG4默认是0XFF(WDTEN[3:0] _ _ _ _),配置字“_”最好不要改变,写入0X0F,WDT在空闲/掉电模式下运行,以超时复位器
    IAPCN = 0xE1; //写入命令(IAPB[1:0] POEN PCEN FCTRL[3:0]),1110 0001,(命令编程CONFIG字节)                                                                                                                                          
    set_CFUEN;        //使能IAP擦除/编程CONFIG
    set_IAPGO;  //运行IAP                                //trigger IAP
                while((CHPCON&SET_BIT6)==SET_BIT6);          //check IAPFF (CHPCON.6)
    clr_CFUEN;//关闭
    clr_IAPEN;        //一旦开始IAP,HIRC打开,功耗变大,所以一般为了减少功耗在最后一条关闭IAP
}


/************************************************************************************************************
*    Main function
************************************************************************************************************/
void main (void)
{



  Set_All_GPIO_Quasi_Mode;

        clr_GPIO1;
        Timer0_Delay1ms(50);                                        //toggle I/O to show MCU Reset
        set_GPIO1;
        Timer0_Delay1ms(50);
        clr_GPIO1;
        Timer0_Delay1ms(50);
        set_GPIO1;
        Timer0_Delay1ms(50);

       
//----------------------------------------------------------------------------------------------
// WDT Init !!! ENABLE CONFIG WDT FIRST !!!
// Warning:
// Always check CONFIG WDT enable first, CONFIG not enable, SFR can't enable WDT reset
// Please call Enable_WDT_Reset_Config() function to enable CONFIG WDT reset
//----------------------------------------------------------------------------------------------

//        Enable_WDT_Reset_Config();

          TA=0xAA;TA=0x55;WDCON=0x07;                                                //Setting WDT prescale         ,0000 0111,1/256分频
                set_WDCLR;                                                                                                                //Clear WDT timer
                while((WDCON|~SET_BIT6)==0xFF);                                //confirm WDT clear is ok before into power down mode
                EA = 1;
                set_WDTR;                                                                                                                        //WDT run
               
    while(1)
                {

                        clr_GPIO1;
                        Timer0_Delay1ms(500);
                        set_GPIO1;
                        Timer0_Delay1ms(500);
                        clr_GPIO1;
                        Timer0_Delay1ms(500);
                        set_GPIO1;
                        Timer0_Delay1ms(500);
                        set_PD;
                }
}
这个超时复位定时器的规格书上面说的不需要WDTR和WIDPD,这个用这个WDTR是做上面用的???
598330983 发表于 2018-4-14 17:04 | 显示全部楼层
你知道这俩干啥的吗?
598330983 发表于 2018-4-14 17:04 | 显示全部楼层
WDTR
0 = WDT 禁止。
1 = WDT 使能。 WDT 计数器开始运行。
598330983 发表于 2018-4-14 17:05 | 显示全部楼层
WIDPD WDT 工作在空闲或掉电模式
该位仅当控制位WDTEN[3:0] (CONFIG4[7:4])全为1时有效。它决定WDT作为通用
定时器在空闲或掉电模式下是否保持工作。
0 = WDT 在空闲或掉电模式下停止工作
1 = WDT 在空闲或掉电模式下保持工作.
598330983 发表于 2018-4-14 17:06 | 显示全部楼层
看最新手册
http://www.nuvoton.com/resource-files/DS_N76E003_SC_Rev1.05.pdf
huangcunxiake 发表于 2018-4-15 08:51 | 显示全部楼层
楼上讲解的好,楼主是没有看明白这个模块的用法。
gejigeji521 发表于 2018-4-15 10:33 | 显示全部楼层
对相关设置寄存器了解不够啊。楼上正解。
幸福小强 发表于 2018-4-15 22:38 | 显示全部楼层
既然可以正常运行,那就是没错。
小灵通2018 发表于 2018-4-16 15:53 | 显示全部楼层
看门狗还要在配置字里设置。
捉虫天师 发表于 2018-4-16 19:20 | 显示全部楼层
看手册,不好找就搜索这个寄存器。
yiy 发表于 2018-4-16 21:11 | 显示全部楼层
哪个上面说的不需要啊。
 楼主| hk386 发表于 2018-4-17 10:17 | 显示全部楼层
598330983 发表于 2018-4-14 17:04
你知道这俩干啥的吗?

WDTR开始计数,WIDPD,控制工作在空闲或者掉电模式(该位只是在通用定时器使用)
 楼主| hk386 发表于 2018-4-17 10:17 | 显示全部楼层
598330983 发表于 2018-4-14 17:05
WIDPD WDT 工作在空闲或掉电模式
该位仅当控制位WDTEN[3:0] (CONFIG4[7:4])全为1时有效。它决定WDT作为通用 ...

我这个例子里是超时复位定时器,所以,你懂的
 楼主| hk386 发表于 2018-4-17 10:19 | 显示全部楼层
huangcunxiake 发表于 2018-4-15 08:51
楼上讲解的好,楼主是没有看明白这个模块的用法。

这个是看门狗,我不是不明白,只是我看规格书里说:注意:当WDT初始化为超时复位定时器是,WDTR和WIDPD没有作用,规格书11.1(第114页)
 楼主| hk386 发表于 2018-4-17 10:20 | 显示全部楼层
gejigeji521 发表于 2018-4-15 10:33
对相关设置寄存器了解不够啊。楼上正解。

这个是看门狗,我不是不明白,只是我看规格书里说:注意:当WDT初始化为超时复位定时器是,WDTR和WIDPD没有作用,规格书11.1(第114页)
 楼主| hk386 发表于 2018-4-17 10:20 | 显示全部楼层
幸福小强 发表于 2018-4-15 22:38
既然可以正常运行,那就是没错。

我不是说不能正常运行,我只是有点理解问题。我看规格书里说:注意:当WDT初始化为超时复位定时器是,WDTR和WIDPD没有作用,规格书11.1(第114页)
 楼主| hk386 发表于 2018-4-17 10:21 | 显示全部楼层
yiy 发表于 2018-4-16 21:11
哪个上面说的不需要啊。

我看规格书里说:注意:当WDT初始化为超时复位定时器是,WDTR和WIDPD没有作用,规格书11.1(第114页)
 楼主| hk386 发表于 2018-4-17 10:38 | 显示全部楼层
598330983 发表于 2018-4-14 17:06
看最新手册
http://www.nuvoton.com/resource-files/DS_N76E003_SC_Rev1.05.pdf

请开你发的规格书11.1(注意当WDT初始化为超时复位定时器时,WDTR和WIDPD没有作用)
598330983 发表于 2018-4-19 13:06 | 显示全部楼层
那就是这两条可有可无了。
幸福小强 发表于 2018-4-22 21:49 | 显示全部楼层
如果没用,那也没错,留着就是多余啊,你删除试试看没,删除了还能正常运行?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

654

帖子

0

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