看门狗怎么配置?

2019-07-22 17:01发布

看门狗该怎么配置?以下是函数库的案例,启用了看门狗,设置了初值,并没有使能中断,不用中断也可以?还是这个案例只是一部分     
if(WatchdogLockState(WATCHDOG0_BASE) == true)
    {
    WatchdogUnlock(WATCHDOG0_BASE);
    }
    ROM_WatchdogReloadSet(WATCHDOG0_BASE, ROM_SysCtlClockGet());
    ROM_WatchdogResetEnable(WATCHDOG0_BASE);
    ROM_WatchdogEnable(WATCHDOG0_BASE);

以下是launchpad的看门狗案例的部分代码,如果按键则g_bFeedWatchdog=false;
怎么看都像是按键后不让看门狗中断标志位清零,触发看门狗复位系统。
    ROM_IntMasterEnable();
    ROM_IntEnable(INT_WATCHDOG);
    ROM_WatchdogReloadSet(WATCHDOG0_BASE, ROM_SysCtlClockGet());
    ROM_WatchdogResetEnable(WATCHDOG0_BASE);
    ROM_WatchdogEnable(WATCHDOG0_BASE);
。。。。。。。
WatchdogIntHandler(void)
{
    if(!g_bFeedWatchdog)
    {
        return;
    }
    ROM_WatchdogIntClear(WATCHDOG0_BASE);
}

我修改成以下代码,但是发现中断有错误,每次运行到启用中断就都会进static void FaultISR(void);这个函数
问题有二:
1.中断是否必需启用?为什么一直会错误,是不是跟别的中断冲突?startup里已经注册
2.启用看门狗,设置初值后是否就不需要什么喂狗了,自动溢出后进入中断,然后清零即可?
3.中断内是否只要对中断标志位清零即可?
    ROM_IntMasterEnable();
    ROM_IntEnable(INT_WATCHDOG);
    ROM_WatchdogIntEnable(WATCHDOG0_BASE);//这句是我加的,原代码没有,这一句式无关紧要的吗?
    ROM_WatchdogReloadSet(WATCHDOG0_BASE, ROM_SysCtlClockGet());
    ROM_WatchdogResetEnable(WATCHDOG0_BASE);
    ROM_WatchdogEnable(WATCHDOG0_BASE);
WatchdogIntHandler(void)
{
    ROM_WatchdogIntClear(WATCHDOG0_BASE);
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
xyz549040622
1楼-- · 2019-07-23 15:29
djz1992 发表于 2016-5-6 16:51
有道理,经常进不去仿真,用ROM形式是不是省RAM?

省RAM是其次的,关键是速度快,但是这样也有缺点,某些需要反应时间的场合,需要加入判断的,有时候会出现没有初始化完毕,就操作的情况。
cemaj
2楼-- · 2019-07-23 19:42
 精彩回答 2  元偷偷看……
cemaj
3楼-- · 2019-07-23 23:15
定时器也是用systick
Soraka
4楼-- · 2019-07-24 01:22
2的作用应该是使能看门狗中断,3是使能看门狗功能
Garen2
5楼-- · 2019-07-24 07:14
调试的时候不要加ROM_这个函数,因为这样的话,会进不去仿真的。

跟着版主又学习了
pmp
6楼-- · 2019-07-24 10:02
看门狗不是复位就行吗

一周热门 更多>