OpenEdv-开源电子网

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

STM32窗口看门狗是怎么进入中断服务程序的

[复制链接]

38

主题

128

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
金钱
300
注册时间
2013-8-19
在线时间
0 小时
发表于 2013-9-6 21:49:35 | 显示全部楼层 |阅读模式
原子的窗口看门狗实验,主程序
       WWDG_Init(0X7F,0X5F,3); //计数器值为7f,窗口寄存器为5f,分频数为8  
      那么有以下两个问题:
     1、喂狗是指让系统复位还是不复位?
     2、那么系统是什么时候开始喂狗的,根据手册的说明,应该是在0x5f-0x4f之间喂,但是具体怎么喂的呢?
   此外,在  WDG.C文件 中
1、中断服务程序是怎么触发的?
2、我使用KEIL断点调试,一直呆在主程序while(1)的死循环中,有什么调试技巧吗
// WDG.C文件
void WWDG_Init(u8 tr,u8 wr,u8 fprer)
{
    RCC->APB1ENR|=1<<11;
WWDG_CNT=tr&WWDG_CNT;
WWDG->CFR|=fprer<<7;
WWDG->CFR=WWDG->CFR&0XFF80;
WWDG->CFR|=wr;
WWDG->CR|=WWDG_CNT;
WWDG->CR|=1<<7;
MY_NVIC_Init(2,3,WWDG_IRQChannel,2);//抢占2,子优先级3,组2     
WWDG->SR=0X00; //注意此处不是WWDG->SR|=0X00;
WWDG->CFR|=1<<9;
void WWDG_Set_Counter(u8 cnt)
{
    WWDG->CR=(cnt&0X7F);
void WWDG_IRQHandler(void)
{
WWDG_Set_Counter(WWDG_CNT);
WWDG->SR=0X00;  //注意此处不是WWDG->SR|=0X00;
LED2=!LED2;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-9-7 15:22:32 | 显示全部楼层
当WWDG->CNT==0X40的时候,触发窗口看门狗中断,然后你迅速在中断里面喂狗,这样CNT值又变大了,从而继续进入下一次循环。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 1 反对 0

使用道具 举报

16

主题

103

帖子

0

精华

高级会员

Rank: 4

积分
830
金钱
830
注册时间
2020-7-1
在线时间
110 小时
发表于 2020-9-2 19:59:22 | 显示全部楼层
请问程序跑飞后,就不会在计数器到0x40的时候  进中断喂狗吗?
也就是:程序跑飞,不会进看门狗中断,对吗?
回复 支持 1 反对 0

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2013-9-6 22:11:57 | 显示全部楼层
回复【楼主位】liyuanmrwhite:
---------------------------------
喂狗就是不让程序复位。
所谓喂狗,就是重置WWDG的计数器
找到喂狗代码下断点,就能看到什么时候喂的狗
回复 支持 反对

使用道具 举报

38

主题

128

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
金钱
300
注册时间
2013-8-19
在线时间
0 小时
 楼主| 发表于 2013-9-6 23:16:26 | 显示全部楼层
回复【2楼】ricefat:

回复【楼主位】liyuanmrwhite:
---------------------------------

找到喂狗代码下断点,就能看到什么时候喂的狗

---------------------------------
什么意思,在窗口看门狗WDG.C是怎么反应的?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-9-6 23:52:02 | 显示全部楼层
窗口看门狗,我们的例程是通过中断喂狗的。就是红色代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

38

主题

128

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
金钱
300
注册时间
2013-8-19
在线时间
0 小时
 楼主| 发表于 2013-9-7 12:36:48 | 显示全部楼层
回复【4楼】正点原子:

窗口看门狗,我们的例程是通过中断喂狗的。就是红色代码。

---------------------------------
具体是怎么跳到中断程序的呢?递减计数从0x7f开始,刷新窗口范围为0xf-0x40之间,根据手册,中断触发是在刷新窗口的时间范围之内,那么递减计数器是怎么触发中断的呢?
回复 支持 反对

使用道具 举报

38

主题

128

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
金钱
300
注册时间
2013-8-19
在线时间
0 小时
 楼主| 发表于 2013-9-7 17:19:49 | 显示全部楼层
回复【6楼】正点原子:

当WWDG->CNT==0X40的时候,触发窗口看门狗中断,然后你迅速在中断里面喂狗,这样CNT值又变大了,从而继续进入下一次循环。

---------------------------------
那么此处设置的WR不就没有意义了么
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-9-7 22:52:52 | 显示全部楼层
设置的WR ,什么WR?没看到。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

38

主题

128

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
金钱
300
注册时间
2013-8-19
在线时间
0 小时
 楼主| 发表于 2013-9-8 14:24:17 | 显示全部楼层
回复【8楼】正点原子:

设置的WR ,什么WR?没看到。

---------------------------------
窗口寄存器WWDG->CFR 的低七位,窗口寄存器设置为5f。这个参数具体有什么用呢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-9-8 14:51:53 | 显示全部楼层
回复【9楼】liyuanmrwhite:
---------------------------------
设置上窗口为0X5F
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

38

主题

128

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
金钱
300
注册时间
2013-8-19
在线时间
0 小时
 楼主| 发表于 2013-9-8 22:08:28 | 显示全部楼层
回复【10楼】正点原子:

回复【9楼】liyuanmrwhite:
---------------------------------
设置上窗口为0X5F

---------------------------------
我的意思是,计数器递减到0X40才跳,那么设置上窗口又有什么意义呢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-9-8 23:14:26 | 显示全部楼层
请看《STM32参考手册》,关于窗口看门狗的介绍。
至于这种设计的实际应用,我确实也没有用到,实际上我基本不用看门狗....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

16

主题

103

帖子

0

精华

高级会员

Rank: 4

积分
830
金钱
830
注册时间
2020-7-1
在线时间
110 小时
发表于 2020-9-2 20:00:11 | 显示全部楼层
liyuanmrwhite 发表于 2013-9-8 22:08
回复【10楼】正点原子:

                                                                        回复【9楼】liyuanmrwhite:
---------------------------------
设置上窗 ...

可以手动喂狗啊,不靠中断呗
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2021-4-30
在线时间
0 小时
发表于 2021-4-30 14:22:19 | 显示全部楼层
q879524825 发表于 2020-9-2 19:59
请问程序跑飞后,就不会在计数器到0x40的时候  进中断喂狗吗?
也就是:程序跑飞,不会进看门狗中断,对吗 ...

大佬,你说的这个逻辑对吗,我也很想知道
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2021-12-26
在线时间
15 小时
发表于 2022-1-19 17:54:04 | 显示全部楼层
现在我的问题是,当计数减数器开始减数,减到ox40时候,“触发中断条件 进入中断”,喂狗。 这里“触发中断条件 "没有在主函数里面 或者wwdg.c里面体现,独立看门狗起码我们会编写按键触发的条件函数 ,读取按键状态来判断触发中断条件语句。然而窗口看门狗,这一个触发条件机制 全都在一个WWDG_CFR的 ewi位? 我不太明白
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 13:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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