OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2057|回复: 2

关于独立看门狗的一点小感悟

[复制链接]

19

主题

126

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2016-8-12
在线时间
50 小时
发表于 2017-8-9 18:25:10 | 显示全部楼层 |阅读模式
         首先申明,本人水平菜鸟级别,在你们看来肯定很low,但是毕竟是自己独立完成的第一个程序,所以还是想分享一下。今天下午学习到了独立看门狗,我之前只是把程序下进去之后看了一下现象,觉得程序很短,觉得没什么,但是自己写了以后才发现问题没有那么简单。          刚开始我按照教程把初始化函数写好后,接着写feeddog函数,这一切都没什么问题,也很快完成,接着开始写主函数,我刚开始发现无从下手,除了几个初始化函数以后就什么都不知道,想到以前看到的现象,灯会一直闪,于是就有了设置灯的高低电平互相交换的想法, 要使高低电平交替,则要在程序复位的时候以及喂狗后没有复位的时候各设置一个电平,暂且设复位以后灯为灭,即高电平,喂狗的时候则低电平,即灯的状态是亮的,用wakeup键喂狗,那么现象应该为如果没有按按键,则灯会亮灭交替,如果按键了,即喂狗了,灯则会一直亮着。
         于是我就首先在ledinit函数里面把led1=1和led2=1添加进去,编译发现报错了,当我把#include "stm32f10x.h"换成#include "sys.h"就完美解决了(我也不知道为什么,好像和我头文件里面led1=PBout(5)以及led2=PEout(5)有关,不知道有没有大佬知道),然后要想看得到现象,肯定要加延时,让灯多灭一会儿,由于我们的目的是不停喂狗,防止程序复位,所以死循环里面加入feeddog函数,用按键控制,控制灯亮的程序放在喂狗程序前面,延时函数后面,如果放在按键处理函数里和喂狗函数在一起就没有意义了,
          当我把所有函数写好以后,程序并没有按照想象中运行,灯几乎一直灭,按键也没有用,完全不受控制,可是反复检查好几遍感觉没有任何问题,后来我跟着例程一句句检查过去,发现在iwdg初始化函数中,我少加了一句 IWDG_ReloadCounter(),为什么这句话会这么重要?直接导致了程序崩溃,刚开始我怎么也想不通,后来经过分析,发现我其实是把这个程序的核心漏掉了        我们都知道,之所以喂狗能防止程序复位,是因为每次喂狗的时候,都会给计数器装入初值,这样看门狗每次都可以从预装载初值开始计数,如果初始化函数中没有这句话,那么程序第一次正常运行之后,寄存器的值就变成了0,虽然有按键喂狗的函数,可是我们知道函数是if(keyup==1) { feeddog(); }这样的,程序运行那么快,要想喂狗成功,可见是何等的困难,所以就出现了灯一直暗的情况,也就是程序几乎不是复位了,就是在复位的路上,即喂狗失败!
       所幸最后还是检查出来了,虽然一个小程序,心里还是很高兴,希望大家在以后的编程过程中也万加小心!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2015-5-14
在线时间
17 小时
发表于 2017-8-9 22:43:46 | 显示全部楼层
加油,慢慢摸索,多练手
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2018-4-23
在线时间
5 小时
发表于 2018-4-27 20:27:16 | 显示全部楼层
楼主你好,我想请教你几个问题:,(我在写这个程序时也遇到了这个问题)
首先,“那么程序第一次正常运行之后,寄存器的值就变成了0” 中的“寄存器”我想应该指的是 计数器 吧。
然后,我有点小疑惑,如果按照你说的,“虽然有按键喂狗的函数,可是我们知道函数是if(keyup==1) { feeddog(); }这样的,程序运行那么快,要想喂狗成功,可见是何等的困难”,那么我想就算初始化的时候写了 IWDG_ReloadCounter(),喂狗也不能成功吧!因为时间太短了!

也就是说,我认为,没有 写 IWDG_ReloadCounter(),尽管开始程序运行不正常,但是,按下键之后还会重新运行正常吧!而且当运行    if(keyup==1) { feeddog(); }后,还有一个10ms的延时,足够重装载了吧!
哎!但是我测试了一下还是不行。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 16:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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