完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
一,窗口看门狗介绍
独立看门狗的喂狗范围 0-X(X由预分频器和重装载值决定,最大值为0xFFF) 独立看门狗相关介绍:传送门:独立看门狗 相比于独立看门狗,窗口看门狗限定了喂狗时间段(由喂狗上限和喂狗下限值限定的喂狗范围) 所以形象的称作窗口看门狗 二,为什么需要窗口看门狗 独立看门狗:在0-重载值之间任意时间都可以喂狗 如果程序跑飞后又跑回正常 或者跑乱的程序正好执行了刷新看门狗 这样独立看门狗是不能检查到并复位芯片的 窗口看门狗:限制了喂狗时间 如果程序跑飞并且在限制的时间段喂狗是很困难的 从而保证了程序的正常运行 1234567891011 三,独立看门狗和窗口看门狗比较 独立看门狗: 驱动:由LSI驱动,即使主时钟发生故障它仍有效 适用场景: 作为主程序之外能够完全独立工作 对时间精度要求较低 123456 窗口看门狗: 驱动:由APB1时钟分频后得到时钟驱动 适用场景: 在精确计时窗口起作用的程序 12345 四,独立看门狗工作原理 参数: CNT:递减计数器 窗口上限:寄存器设置 窗口下限:0x3F 随时间推移,计数器值递减,经过上窗口W和下窗口 重载值-》上窗口:这段时间不允许喂狗,如果喂狗会使芯片复位 上窗口-》下窗口:这段时间允许喂狗,下窗口位固定值(0x3F) 下窗口:进入下窗口会产生复位 T6位: 0x3F=00111111 在计数器到达0x3F之前第六位为1 所以当计数器到达窗口下限前T6位为1,到达窗口下限后T6位为低电平 复位: 当计数器到达窗口下限(喂狗失败),会产生MCU复位信号,使芯片复位 12345678910111213141516171819 五,窗口看门狗复位分析 递减计数器时钟: 时钟来源PCLK1 由于PCLK1时钟频率过高/4096 再经过预分频器WDGTB 预分频后作为递减计数器时钟 WWDG_CR寄存器: T7:WDGA启动位-使能窗口看门狗 T0-6 :6位递减计数器寄存器 WWDG_CFR寄存器: W0-6:设置窗口看门狗上窗口值 比较器: 比较递减计数器CNT和上窗口寄存器大小关系 递减计数器值》上窗口值 比较结果为1 1234567891011121314151617 分析一: 计数器值》上窗口值时,喂狗,会产生复位 当计数器值》上窗口值时,比较器比较结果输出为1 此时喂狗,与门1下端输入为1 所以,或门1上端输入为1,导致与门2右端输入为1 此时看门狗处于使能状态,与门2左端输入为1 所以芯片产生复位 123456 分析二: 计数器值到达0x3F,会产生复位 当计数器值到达0x3F时,T6位从1跳变到0 或门1下端输入通过取反置1,所以或门1输出值为1,与门右侧输入值为1 此时看门狗处于使能状态,与门2左端输入为1 所以芯片产生复位 12345 总结:窗口看门狗有两种情况会产生复位 1,喂狗时间大于窗口上限值 2,计数器值从0x40减到0x3F 如果启动看门狗并且允许中断,当递减计数器等于0x40时,会产生唤醒中断EWI,它可以用于喂狗避免WWDG复位 12345 窗口看门狗使用注意 上窗口值W[6:0]必须大于下窗口值0x40(0x40产生唤醒中断),否则窗口看门狗就没有窗口了 12 六,窗口看门狗的超时时间 时钟来源: Fpclk1除以4096再经过WDGTB预分频器 f = Fpclk1 / (4096 * 2^WDGTB) 123 超时时间: 窗口看门狗时钟周期(时钟频率f分之1) * t = 1/f * 看门狗计数器重载值 123 七,窗口看门狗相关寄存器 直接写WWDG_CR[6:0]实现喂狗 独立看门狗喂狗:向键值寄存器IWDG_KR写0xAAAA喂狗。将IWDG_RLR寄存器值重新装载到计数器 123 位0-6设置上窗口值 位7-8设置时基-窗口看门狗的时钟频率 位9提前唤醒中断使能位(1:使能)当计数器到达0x40产生中断 1234 WWDG_SR只用到位0:提前唤醒中断标志 当计数器达到0x40时,由硬件置1,需软件清零 123 八,窗口看门狗相关库函数 stm32f10x_wwdg.h中找到相关函数头文件 九,窗口看门狗相关配置步骤 十,窗口看门狗代码: HARDWARE/WDG目录新建wgd.h HARDWARE/WDG目录新建wgd.c USER/main.c主函数编写 以上程序实现: 程序初始化LED点亮延时300ms熄灭 窗口看门狗从0x7F开始递减计数,上窗口为0x5F,下窗口为0x7F 计数器到达0x40进入提前唤醒中断, 在中断函数中进行喂狗操作,计数器翻转(从0x7F重新计数),LED1翻转 以此循环。。. 翻转频率为从0x7F计数到0x40,翻转时间可以根据公式计算 正常喂狗: LED0亮300ms之后熄灭,LED1不断闪烁 喂狗失败(注释掉喂狗函数): 程序不断复位,LED0闪烁 |
|
|
|
只有小组成员才能发言,加入小组>>
4508个成员聚集在这个小组
加入小组3334 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4262 浏览 1 评论
4289 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 09:17 , Processed in 0.519648 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号