打印
[DemoCode下载]

N76e003的看门狗复位

[复制链接]
4847|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
643757107|  楼主 | 2018-7-31 17:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technoledge Corp.
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : May/02/2018
//***********************************************************************************************************

//***********************************************************************************************************
//  File Function: N76E003 Watch Dog reste functiondemo code
//***********************************************************************************************************

#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 Check_WDT_Reset_Config(void)
{
                set_IAPEN;
                IAPAL = 0x04;
                IAPAH = 0x00;       
                IAPFD = 0xFF;
                IAPCN = 0xC0;                                                //Read config command
                set_IAPGO;  
                if ((IAPFD&0xF0)==0xF0)
                {
                                IAPFD = 0x0F;
                                IAPCN = 0xE1;
        set_IAPGO;                                                                         //trigger IAP
                                while((CHPCON&SET_BIT6)==SET_BIT6);          //check IAPFF (CHPCON.6)
                                clr_CFUEN;
                                clr_IAPEN;
                                EA = 0;
                                TA = 0xAA;
                                TA = 0x55;
                                CHPCON &= 0xFD;
                                TA = 0xAA;
                                TA = 0x55;
                                CHPCON |= 0x80;
                }
                clr_IAPEN;
}


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

  Set_All_GPIO_Quasi_Mode;
//        CKDIV = 0X01;
        clr_GPIO1;
//        Timer0_Delay1ms(1);                                        //toggle I/O to show MCU Reset
        set_GPIO1;

       
//----------------------------------------------------------------------------------------------
// 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
//----------------------------------------------------------------------------------------------
                Check_WDT_Reset_Config();
       
          TA=0xAA;TA=0x55;WDCON|=0x07;                                                //Setting WDT prescale
                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_P05;
                        Timer0_Delay1ms(1);
                        set_P05;
                        Timer0_Delay1ms(1);
                        clr_P05;
                        Timer0_Delay1ms(1);
                        set_P05;
                        Timer0_Delay1ms(1);
                        clr_P05;
                        set_PD;
                }
}



沙发
玛尼玛尼哄| | 2018-7-31 19:16 | 只看该作者
有了这个例子,做起来就容易了。

使用特权

评论回复
板凳
yiyigirl2014| | 2018-7-31 19:58 | 只看该作者
没看懂怎么回事。

使用特权

评论回复
地板
gejigeji521| | 2018-7-31 20:18 | 只看该作者
没有喂狗?

使用特权

评论回复
5
稳稳の幸福| | 2018-7-31 20:51 | 只看该作者
跑一下例子就明白了。

使用特权

评论回复
6
捉虫天师| | 2018-8-6 20:23 | 只看该作者
看门狗好多应用都是关闭的。

使用特权

评论回复
7
yiyigirl2014| | 2018-8-6 20:37 | 只看该作者
PD 掉电模式  设置该位使MCU进入掉电模式。在此模式下,CPU和外设时钟停止,程序计数器 (PC)挂起。此时为最小功耗。CPU从掉电模式下唤醒后,该位自动由硬件清零, 且在系统唤醒之前程序继续执行中断服务程序(ISR)。从ISR返回后,设备继续执 行系统进入掉电模式时所处的指令。 注如果IDL位和PD位同时置位,MCU进入掉电模式。从掉电模式退出后不会进入空 闲模式。

使用特权

评论回复
8
yiyigirl2014| | 2018-8-6 20:38 | 只看该作者
关键看这个PD,是主函数执行了这个。然后系统休眠了,一旦被看门狗复位那就唤醒了。

使用特权

评论回复
9
dhvliyike| | 2018-8-14 18:49 | 只看该作者
看门狗定时器复位 最低功耗能做到多少?

使用特权

评论回复
10
huangcunxiake| | 2018-8-14 21:53 | 只看该作者
好用应用,开始就关看门狗

使用特权

评论回复
11
chansoncc| | 2019-1-8 23:30 | 只看该作者
看门狗不是可以在程序跑飞时复位保障系统运行吗? 为什么说开始就关看门狗不用哦

使用特权

评论回复
12
KGSABER| | 2019-2-18 16:19 | 只看该作者
我跑了这个历程,一直卡在while((CHPCON&SET_BIT6)==SET_BIT6);          //check IAPFF (CHPCON.6)这一条!!

使用特权

评论回复
评论
windows100 2019-9-25 17:34 回复TA
新的IC默认是关了的,你用Keil的时候要在Debug里面设置一下,打开才能用。这个真是反人类,也没个地方说一下。 
13
xixi2017| | 2019-2-18 23:52 | 只看该作者
楼上说的是为啥

使用特权

评论回复
14
xixi2017| | 2019-2-18 23:54 | 只看该作者
。IAP动作完成后,程序计数器继续运行之后的指令,IAPGO位将自动清零。IAPFF (CHPCON.6)是IAP错误标志,可以用来检查之前IAP操作成功与否。通过这些纯软件的设置,用户可以很方便对FLASH存储器进行擦除、编程和校验。

使用特权

评论回复
15
xixi2017| | 2019-2-18 23:54 | 只看该作者
看门狗的程序,怎么还搞了IAP

使用特权

评论回复
16
xixi2017| | 2019-2-18 23:55 | 只看该作者
KGSABER 发表于 2019-2-18 16:19
我跑了这个历程,一直卡在while((CHPCON&SET_BIT6)==SET_BIT6);          //check IAPFF (CHPCON.6)这一条 ...

说明IAP错误了,看看是不是有相关的配置字没有设置对

使用特权

评论回复
17
xixi2017| | 2019-2-18 23:57 | 只看该作者
配置字里有跟看门狗和IAP相关的设置。

使用特权

评论回复
18
antusheng| | 2019-2-21 18:43 | 只看该作者
看门狗的应用一般比较少。

使用特权

评论回复
19
antusheng| | 2019-2-21 18:43 | 只看该作者
在程序设计开始一般都是关闭看门狗。功能完善后,再增加防止跑飞。

使用特权

评论回复
20
xuanhuanzi| | 2019-2-22 18:29 | 只看该作者
增强版的51,支持多种复位m

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

199

主题

3708

帖子

11

粉丝