基于第二篇,结合代码和TRM分析看门狗相关操作,直接上代码
HWREG(SOC_WDT_1_REGS + WDT_WSPR) = 0xAAAAu;
while(HWREG(SOC_WDT_1_REGS + WDT_WWPS) != 0x00);
HWREG(SOC_WDT_1_REGS + WDT_WSPR) = 0x5555u;
while(HWREG(SOC_WDT_1_REGS + WDT_WWPS) != 0x00);
这里为什么要这么写呢?这个嘛,我也不知道.....因为TI的 TRM就是这么说的,有图有真相
再来看看相关寄存器的地址,所以地址都在Memory Map里面可以找到,注意这里是没有WDT0的,如下
最后做个简单总结:
1.看门狗原理
看门狗本质就是一个定时器,不断自加或者自减,需要在指定时间内翻转看门狗引脚电平,从而到达清除看门狗的操作,这样就不会发生看门狗中断(若指定时间内没有喂狗,则系统会发生中断,系统从0地址开始运行),其作用:防止程序跑死,系统死机
2.am335x看门狗操作
允许:先写入xxxxBBBBh等待操作完成,然后再写入xxxx4444H等待操作完成
禁止:先写入xxxxAAAAh等待操作完成,然后再写入xxxxBBBBH等待操作完成