stm32 看门狗
来源:互联网 发布:中华家长 知乎 编辑:程序博客网 时间:2024/06/04 18:13
stm32 有两种看门狗,一种是独立的硬件看门狗,另一种是窗口看门狗
STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟并不是准确的40Khz,而是在30~60Khz之间变化的一个时钟,只是我们在估算的时候,以40Khz的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。
独立看门狗的配置是有一定顺序的,可以参考许多例程,配置起来也是很简单的,首先向IWDG_KR写入0X5555。通过这步,我们取消IWDG_PR和IWDG_RLR的写保护,使后面可以操作这两个寄存器。设置IWDG_PR(预分频值)和IWDG_RLR(重装载值)的值,通过这两个值的设置可以知道看门狗的喂狗时间,Tout=((4×2^prer) ×rlr) /40,其中Tout是看门狗溢出时间,单位是ms,prer是看门狗的预分频值,rlr是重装值,其中预分频值是0~7的值,重装值最大是0xfff。如果我们设置prer为4,rlr值为625,那么就可以得到Tout值为1000ms。其次是向IWDG_KR写入0XAAAA。通过这句,将使STM32重新加载IWDG_RLR的值到看门狗计数器里面。也可以用该命令来喂狗。最后是启动看门狗,向IWDG_KR写入0XCCCC。注意IWDG在一旦启用,就不能再被关闭!想要关闭,只能重启,并且重启之后不能打开IWDG,否则问题依旧,所以在这里提醒大家,如果不用IWDG的话,就不要去打开它,免得麻烦。代码应该是这样的:
void WatchDog_Init(u8 prer, u16 reld)
{
}
//喂狗
void WatchDog_Feed(void)
{
}
个人问题汇总:
看似简单的配置,觉得看门狗也没有什么麻烦的,但是在用的时候总是无法顺利使用,第一是对看门狗理解不够透彻,第二是对自己不够信心,第三是试验手段太过欠缺,不能够验证自己代码的正确性,所以到头来一直没有成功的在自己的项目中运用独立看门狗,明天去一定的调试下,用之前写好的程序,烧写完毕后去掉JLINK测试,然后用示波器查看有没有电平变换,好了今天就写到这里了。
。。。。。。
经过一个上午的测试,发现并不是我看门狗配置的错误,而是本身看门狗的硬件存在问题,所以才会造成复位无法实现,通过示波器可以很好的看到由于看门狗产生的复位信号的下降沿尖端脉冲,但是由于下降的幅度不是太明显,所以造成无法复位,经过检查发现硬件的复位电路采用的是电阻为1K,电容为10uf的钽电容,电阻小,电容大造成复位时间长,因此看门狗无法复位,但是硬件看门狗能够顺利复位电路。随后将复位电路换成10K电阻,0.1uf的电容之后,看门狗能够很好的复位。由此可以看出
做硬件调试一定、一定要结合硬件检测仪器,示波器,万用表,逻辑分析仪。。。都是很好的工具,通过工具检测硬件与软件所出现的问题会更加只管,方便。
- stm32看门狗
- stm32看门狗
- stm32 看门狗
- stm32 看门狗
- STM32 看门狗
- STM32看门狗
- STM8|STM32 看门狗使用
- STM32的看门狗配置
- STM32的看门狗配置
- STM32 看门狗学习笔记
- STM32的独立看门狗
- STM32窗口看门狗
- stm32两个看门狗
- stm32 独立看门狗学习
- STM32窗口看门狗
- STM32独立看门狗
- Stm32-窗口看门狗实验
- STM32看门狗总结
- Android URL encode 空格处理
- USACO 2007 公开赛(银组)
- 一个函数中返回多个值
- Spring Quartz结合Spring mail定期发送邮件
- 对一次笔试写过小结
- stm32 看门狗
- Java内部类理解
- C++经典开源项目
- 【剑指offer】面试题10:二进制中1的个数
- A4纸的屏幕比列
- linux vimrc配置
- 互信息概念与定理
- java数组、排序问题1
- 4000同胞今日启程回国 2艘客轮已抵达越南永安港