WOTASOM 发表于 2010-5-8 20:38:06

AT91SAM7X256 看门狗不起作用, 不知道大家是否遇到过?

如题.
(起因: 突然想用X256的WDT,调试了一天,居然没搞定,-_-! )

代码如下,相关宏在AT91的库文件中有定义,代码写在"Cstartup_SAM7.c"文件中.

    AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDIDLEHLT                // 看门狗空闲停止
                            | AT91C_WDTC_WDDBGHLT                // 看门狗调试停止
                            | (0X100<<16)                //
                            | AT91C_WDTC_WDRSTEN                // 使能看门狗复位
                            | 0X100;                        // WDD=WDV

    AT91C_BASE_WDTC->WDTC_WDCR = ((unsigned int)0xA5<<24) | AT91C_WDTC_WDRSTT;

主程序中写了个循环,看是否会重启动,代码如下:
       
while(1){
    LED0_LAMP_L;      // LED0灯亮
    Delay(40000000);
    LED1_LAMP_L;
    Delay(40000000);
    LED2_LAMP_L;
    Delay(40000000);
}

WOTASOM 发表于 2010-5-8 21:57:36

参考代码
SAM7X256-WDT-IAR.rarourdev_552476.rar(文件大小:600K) (原文件名:SAM7X256-WDT-IAR.rar)

xlsbz 发表于 2010-5-22 22:49:38

让我猜猜 可能是 WDTC_WDMR 只能用一次! 而在启动代码里面用了一次了 所以你自己的WDTC_WDMR设置就没起作用!

WOTASOM 发表于 2010-6-24 01:49:46

2楼所言极是!OK了,呵呵

xjq2008xz 发表于 2010-8-25 12:57:11

兄弟怎么解决的啊,我还是没有看懂

beaujolin 发表于 2010-10-15 16:49:00

回复【楼主位】WOTASOM 突击驾驶员
-----------------------------------------------------------------------

楼主好!我目前在用AT91SAM9263进行开发,也想使用其内部的看门狗。我在主程序中参考本贴的代码,设置如下:
AT91C_BASE_WDTC->WDTC_WDMR=(1<<29)|(1<<28)|(0x100<<16)|AT91C_WDTC_WDRSTEN | 0x100;
AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | AT91C_RSTC_KEY;
并且将低级初始化的AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;注释掉了。但是CPU并不复位。
请楼主不吝赐教~~拜谢~~~

WOTASOM 发表于 2010-10-22 21:42:37

回复【5楼】beaujolin
-----------------------------------------------------------------------

    //*****************************************************************************
    // 看门狗定时器模式寄存器
    //
    // 禁止看门狗
        //AT91C_BASE_WDTC->WDTC_WDMR=AT91C_WDTC_WDDIS;
       
    //AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
    // WDD=WDV 否则会有问题
    AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDIDLEHLT                // 看门狗空闲停止
                                                           | AT91C_WDTC_WDDBGHLT                // 看门狗调试停止
                                                           | (0X200<<16)                                // 2 秒
                                                           | AT91C_WDTC_WDRSTEN                // 使能看门狗复位
                                                           | 0X200;                                        // WDD=WDV
页: [1]
查看完整版本: AT91SAM7X256 看门狗不起作用, 不知道大家是否遇到过?