查看: 3435|回复: 8

[已解决] 看门狗的使用问题(已解决)

[复制链接]

该用户从未签到

2

主题

12

帖子

0

注册会员

Rank: 2

积分
76
最后登录
2017-1-2
发表于 2016-2-16 15:29:50 | 显示全部楼层 |阅读模式
本帖最后由 yyy123yyy 于 2016-2-18 17:06 编辑

看门狗调试过程中芯片不断的复位,请大神指导!
void WDOG_Init(word ms){             //初始化看门狗
           __disable_irq();                                                                          WDOG->UNLOCK   = 0xC520;
          WDOG->UNLOCK   = 0xD928;
         __enable_irq();           
        WDOG->PRESC    = 0x0000;   //不分频                 
        WDOG->TOVALH   = (ms - 1) >> 16;
        WDOG->TOVALL   = (ms - 1) & 0xffff;
        WDOG->STCTRLH  = 0x0001;                    //enable WDOG

}

void WDOG_Feed(void){     //喂狗
           __disable_irq();                                                                        WDOG->UNLOCK   = 0xC520;
        WDOG->UNLOCK   = 0xD928;         

          WDOG->PRESC  =  0x0000;
          WDOG->REFRESH = 0xA602;
         WDOG->REFRESH = 0xB480;
          __disable_irq();
        
}        


int main(void) {
           WDOG_Init(60000); //设置超时时间60S
   for(;;){
                delayMS(48000);
                 WDOG_Feed();
              }
芯片会一段时间复位,大家看一下是我哪里设置的不对,非常感谢!
我知道答案 目前已有8人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2016-2-16 16:03:44 | 显示全部楼层
楼主你好!
请问你用的什么系列的芯片?
你说的芯片会一段时间之后复位?如果你for中不加延时,或者延时搞小点喂狗,看看是否还会复位。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2016-2-17 10:45:27 | 显示全部楼层
    楼主要看一下配置的看门狗的最长喂狗时间。不要超过这个时间。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    76
    最后登录
    2017-1-2
     楼主| 发表于 2016-2-17 11:05:01 | 显示全部楼层
    我用的是飞思卡尔K22FX512,我的延时实际是用定时器实现的,当定时到喂狗,这里写的delayMS只是在这里表示一下延时。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    76
    最后登录
    2017-1-2
     楼主| 发表于 2016-2-17 11:09:23 | 显示全部楼层
    安 发表于 2016-2-17 10:45
    楼主要看一下配置的看门狗的最长喂狗时间。不要超过这个时间。

    我看门狗定时器使用的是系统LPO定时器,时间应该是1ms,设置超时时间的寄存器是WDOG_TOVALH和WDOG_TOVALL分别是16位,按照常理来说60S的时间应该是够的吧!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    76
    最后登录
    2017-1-2
     楼主| 发表于 2016-2-17 11:11:46 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2016-2-16 16:03
    楼主你好!
    请问你用的什么系列的芯片?
    你说的芯片会一段时间之后复位?如果你for中不加延时,或者延时搞 ...

    我用的是飞思卡尔K22FX512,我的延时实际是用定时器实现的,当定时到喂狗,这里写的delayMS只是在这里表示一下延时。我试过20S喂狗一次也会出现复位的情况,有没有可能是我的时间计算的有问题!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2016-2-17 11:13:08 | 显示全部楼层
    yyy123yyy 发表于 2016-2-17 11:05
    我用的是飞思卡尔K22FX512,我的延时实际是用定时器实现的,当定时到喂狗,这里写的delayMS只是在这里表示 ...

    你在main函数之前做了多少事情?
    如果上来就是使能看门狗,并且在进入main之前就做了很多的事情,导致没进入看门狗配置就复位也是可能的。
    你debug看看,是不是能进入到看门狗初始化之后不复位。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    76
    最后登录
    2017-1-2
     楼主| 发表于 2016-2-17 13:39:57 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2016-2-17 11:13
    你在main函数之前做了多少事情?
    如果上来就是使能看门狗,并且在进入main之前就做了很多的事情,导致没 ...

    初始化之前确实有很长一段时间在初始化,现在已经解决,非常感谢版主,大赞!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2016-2-17 14:26:56 | 显示全部楼层
    yyy123yyy 发表于 2016-2-17 13:39
    初始化之前确实有很长一段时间在初始化,现在已经解决,非常感谢版主,大赞!!! ...

    问题解决了就好!
    所以,通常要使用看门狗,直接在上电之后的地方开启配置看门狗,防止其他代码执行时间长导致看门狗复位永远进不了看门狗初始化。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 20:18 , Processed in 0.101685 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表