Kinetis MKL14 watchdog 不能开启,帮忙看看(已解决)
本帖最后由 FSL_TICS_Robin 于 2014-8-8 16:37 编辑Kinetis MKL14 watchdog 不能开启,帮忙看看是什么问题呀,我开了看门狗,没有喂狗,但他一直不复位的。看寄存器的值一直是0x00,但看参考手册发现这个寄存器值默认就是0x0c呀,默认就开启看门狗的呀,但我调试时看到这个寄存器值一直是0x00,我后面再次开启,也发现没有写进去。这是什么原因呢,请各位高手帮忙看看,是不是写这个寄存器值需要解锁呢
这个是我写的watchdog部分程序
调试尝试写这个值 ,但好像写不进
看参考手册这个默认应该是0x0c呀
我用官方的PE工具生成的代码差不多也是这样写的呀
楼主你在哪里操作的看门狗呢? 楼主你好
请问你使用的是官方例程包还是自己的工程呢? FSL_TICS_Robin 发表于 2014-7-31 10:21
楼主你好
请问你使用的是官方例程包还是自己的工程呢?
自己的工程,我用官方的PE生成的代码跟我写的也差不多呀 时光倒退 发表于 2014-7-31 10:11
楼主你在哪里操作的看门狗呢?
在main函数里启动看门狗,没有喂狗,但一直不复位的,看那个寄存器的值好像没有启动成功哦,不知是不是要解锁什么的 dreamteam 发表于 2014-7-31 10:33
自己的工程,我用官方的PE生成的代码跟我写的也差不多呀
以前很多客户用飞思卡尔官方例程,官方例程在进main函数前都会禁止看门狗。
看门狗寄存器是只写一次的,建议你搜一下那些寄存器,找一下是否程序一开始有禁止过 FSL_TICS_Robin 发表于 2014-7-31 11:06
以前很多客户用飞思卡尔官方例程,官方例程在进main函数前都会禁止看门狗。
看门狗寄存器是只写一次的, ...
main函数之前的怎么看,为什么看门狗寄存器只能写一次呢,那关了之后就不能再开啦,还想问下睡眠对看门狗有没影响,睡眠时看门狗还工作的吗 dreamteam 发表于 2014-7-31 11:26
main函数之前的怎么看,为什么看门狗寄存器只能写一次呢,那关了之后就不能再开啦,还想问下睡眠对看门狗 ...
寄存器特性你可以看下参考手册
你的工程上传一下吧 我记得看门狗好像是一个动态过程,并不是只操作一次寄存器就可以了! 楼主你好,关于看门狗,我要和你说几点:
1:SIM_COPC寄存器只能写入一次,第二次及以后的写入是无效的。
2:如果选择1Khz时钟的时候,MCU一旦进入到调试模式或者停止模式(包括VLPS或LLS),COP计数器都将被初始化为0,所以你的测试方法也是不对的,不能在debug状态下,CPO计数器不跑的。
我特的试了下KL芯片,程序烧录后,不喂狗重复被复位,肯定没有问题。
所以你需要查查你的SIM_COPC寄存器在启动程序中有没有被写过(关看门狗), 另外调试不能在debug状态下。
希望能帮到你。 dreamteam 发表于 2014-7-31 11:26
main函数之前的怎么看,为什么看门狗寄存器只能写一次呢,那关了之后就不能再开啦,还想问下睡眠对看门狗 ...
只能写一次是寄存器的定义,停止模式下,COP计数器不跑的。 你好,如果是IAR的话,是因为IAR内置的flashloader会自动把看门狗禁掉,所以就出来一调试就发现COP的寄存器值为0的情况,希望能帮到你。 unknown 发表于 2014-8-1 13:28
你好,如果是IAR的话,是因为IAR内置的flashloader会自动把看门狗禁掉,所以就出来一调试就发现COP的寄存器 ...
你说的内置flashloader会自动禁掉看门狗,具体在哪里看呢?
怎么知道它有没有被flashloader禁掉?
xinyinxing 发表于 2014-8-1 13:35
你说的内置flashloader会自动禁掉看门狗,具体在哪里看呢?
怎么知道它有没有被flashloader禁掉?
...
请看$IAR_DIR$\arm\src\flashloader\Freescale\FlashKLXX\FlashKLxx.c 第97行。
其中$IAR_DIR$是指IAR安装的目录 unknown 发表于 2014-8-1 13:39
请看$IAR_DIR$\arm\src\flashloader\Freescale\FlashKLXX\FlashKLxx.c 第97行。
其中$IAR_DIR$是指IAR安 ...
感谢指点,之前一直没有注意这点。
以前以为flashloader都是.board呢。
这个flashloder的.c和下程序的.board什么关系呢?
flashKLxx.c是每个IAR工程的KL系列芯片必须要调用吗? unknown 发表于 2014-8-1 13:39
请看$IAR_DIR$\arm\src\flashloader\Freescale\FlashKLXX\FlashKLxx.c 第97行。
其中$IAR_DIR$是指IAR安 ...
如果使用IAR是在哪里调用这个flashKLxx.c呢?
在KL25的例程中,没有看到调用这个文件的。 xinyinxing 发表于 2014-8-1 13:46
感谢指点,之前一直没有注意这点。
以前以为flashloader都是.board呢。
这个flashloder的.c和下程序的.bo ...
这个.c文件是IAR 里 编译 flashloader 要用的源文件。其实有一个办法可以验证你的Watchdog有没有开启,就是不debug 然后用串口把SIM_COPC打出来看看。 unknown 发表于 2014-8-1 13:49
这个.c文件是IAR 里 编译 flashloader 要用的源文件。其实有一个办法可以验证你的Watchdog有没有开启, ...
打印不失为一种好办法。
你的意思就是.C就是。board的源文件是吧?
但是在实际使用中,发现有时候不勾选那个.board也可以正常下载。这个是不是说明没有用那个.c的flashloader呢?
我用KL25官方代码,是可以在start.c里面有禁止看门狗的,所以估计可能没有用IAR根目录下的flashloaderKLxx.c。
还有其他方法可以看是否用了IAR根目录下的那个flashloaderKLxx.c吗? xinyinxing 发表于 2014-8-1 13:53
打印不失为一种好办法。
你的意思就是.C就是。board的源文件是吧?
但是在实际使用中,发现有时候不勾选 ...
你如果用Jlink的话,JLINK一般会有自己的flashloader,不过可能没公布源码,但原理是一样的,他也需要禁用看门狗,而KL系列的看门狗寄存器的不便之处是芯片复位后只允许写一次。所以就导致你的应用程序里再也不能写了。 unknown 发表于 2014-8-1 13:58
你如果用Jlink的话,JLINK一般会有自己的flashloader,不过可能没公布源码,但原理是一样的,他也需要禁用 ...
我用的是OPENSDA,官方代码是可以的。
所以我就想,那个flashloader是怎么调的,我的程序应该是没有调用,所以我是可以的。 xinyinxing 发表于 2014-8-1 14:00
我用的是OPENSDA,官方代码是可以的。
所以我就想,那个flashloader是怎么调的,我的程序应该是没有调用 ...
官方代码你在调试的时候也可以用么?OpenSDA用的应该是IAR自带的flashloader啊,除非你下载到RAM里 unknown 发表于 2014-8-1 14:06
官方代码你在调试的时候也可以用么?OpenSDA用的应该是IAR自带的flashloader啊,除非你下载到RAM里 ...
官方代码我试过,是下到flash中的,直接修改start.C,配置看门狗就可以运行了。
所以,你说的flashloader给屏蔽了,我也有些疑惑。 以前也碰到过这个问题。请参考
http://www.eefocus.com/bbs/article_1280_563348.html 估计楼主还是在那里吧看门狗给关了,要仔细找找代码。 FSL_TICS_ZJJ 发表于 2014-8-1 13:25
楼主你好,关于看门狗,我要和你说几点:
1:SIM_COPC寄存器只能写入一次,第二次及以后的写入是无效的。
2 ...
好的,谢谢,我再看看 dreamteam 发表于 2014-8-6 11:15
好的,谢谢,我再看看
好的,如果还有问题,欢迎继续交流。
如果问题解决了,还请帮我结贴,在你的标题上加上(已解决),这样方便我们查看未结帖。 dreamteam 发表于 2014-8-6 11:15
好的,谢谢,我再看看
看你的情况,肯定是程序一开始硬件初始化的时候就给关了,你全局搜索下SIM_COPC,看看是不是有把这个寄存器清掉的。
我试了好几个KL系列的芯片,都是没有问题的。
页:
[1]