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);
} 参考代码
SAM7X256-WDT-IAR.rarourdev_552476.rar(文件大小:600K) (原文件名:SAM7X256-WDT-IAR.rar) 让我猜猜 可能是 WDTC_WDMR 只能用一次! 而在启动代码里面用了一次了 所以你自己的WDTC_WDMR设置就没起作用! 2楼所言极是!OK了,呵呵 兄弟怎么解决的啊,我还是没有看懂 回复【楼主位】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并不复位。
请楼主不吝赐教~~拜谢~~~ 回复【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]