OpenEdv-开源电子网

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

窗口看门狗中断是怎么进入的

[复制链接]

38

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-7-12
在线时间
0 小时
发表于 2011-8-14 20:53:25 | 显示全部楼层 |阅读模式
下面程序中中断是是计数值等于0x40进入的?

 
void WWDG_IRQHandler(void)
{   
 u8 wr,tr;
 wr=WWDG->CFR&0X7F;
 tr=WWDG->CR&0X7F;  
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-6-30
在线时间
0 小时
发表于 2015-7-24 10:43:17 | 显示全部楼层
回复【11楼】xuper2455:
---------------------------------我是新手,,,发现的问题的根本是窗口看门狗的中断没有使能
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;      //中断使能,,这句话没有加进去
回复 支持 2 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-8-14 21:39:19 | 显示全部楼层
是的,文档上这么讲的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2011-8-26
在线时间
0 小时
发表于 2011-8-31 16:30:40 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
void WWDG_IRQHandler(void) 
{    
u8 wr,tr; 
wr=WWDG->CFR&0X7F; 
tr=WWDG->CR&0X7F;         
if(tr<wr) WWDG_Set_Counter(WWDG_CNT);//只有当计数器的值,小于窗口寄存器的值才能写 CR!!   
WWDG->SR=0X00;//清除提前唤醒中断标志位 
LED1=!LED1; 
} 这个是中断处理函数的完整程序 如果是计数值等于0x40进入中断处理函数 那么此时tr的值为0x40 。
wr的值为0x5f(主函数里赋值的),这个判断if(tr<wr) 还有必要么?
>
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-8-31 22:26:04 | 显示全部楼层
回复【3楼】azhengfly:
---------------------------------
在我的代码里面是必要的.不过我最新的代码是不需要了.
解决办法论坛我应该发过了,你搜索下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2011-8-26
在线时间
0 小时
发表于 2011-9-1 09:52:34 | 显示全部楼层
找到了 谢谢啊
回复 支持 反对

使用道具 举报

3

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2012-3-30
在线时间
3 小时
发表于 2012-4-8 15:26:16 | 显示全部楼层
回复【5楼】azhengfly:
---------------------------------
新代码和旧代码就是把使能标志位换到下面去了,有什么区别啊?求解!
回复 支持 反对

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2012-8-25
在线时间
1 小时
发表于 2012-8-30 19:45:15 | 显示全部楼层
这个我也搞不清楚 ,希望有人解决下。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-5-7
在线时间
0 小时
发表于 2013-5-7 18:28:05 | 显示全部楼层
我也发现这个实验有问题,我用的是函数库版,我仿真时发现程序无法进入中断服务程序喂狗,这个程序一直在复位。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-5-7
在线时间
0 小时
发表于 2013-5-8 01:44:30 | 显示全部楼层
我找到原因了,把这局WWDG_NVIC_Init();    放到函数的开头就可以了,可能是要先配置好NVIC的。
void WWDG_Init(u8 tr,u8 wr,u32 fprer)
WWDG_NVIC_Init();         
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);

WWDG_SetPrescaler(fprer);

WWDG_SetWindowValue(wr);

WWDG_Enable(tr);               

WWDG_ClearFlag();

WWDG_EnableIT(); 
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2013-5-16
在线时间
1 小时
发表于 2013-5-16 16:31:01 | 显示全部楼层
我也遇到这个问题,窗口看门狗步进服务程序,一直复位主函数。求解楼上WWDG_NVIC_Init()函数内容是什么?
回复 支持 反对

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-6-28
在线时间
3 小时
发表于 2013-7-13 13:44:26 | 显示全部楼层
为什么我的窗口看门狗无法进入提前唤醒中断,而是进入启动函数的自动重装载  LDR     R0, =SystemInit中,好像是复位啊。我的中断位也开启了啊。求解?
回复 支持 反对

使用道具 举报

21

主题

146

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
467
金钱
467
注册时间
2013-7-12
在线时间
86 小时
发表于 2013-8-22 15:38:42 | 显示全部楼层
回复【9楼】xiaochangb:
---------------------------------
多谢分享
回复 支持 反对

使用道具 举报

4

主题

13

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2014-2-20
在线时间
0 小时
发表于 2014-2-27 15:01:56 | 显示全部楼层
回复【9楼】xiaochangb:
---------------------------------
是这?
// void WWDG_Set_Counter(u8 cnt)
// {
//     WWDG_Enable(cnt);  
// }好像是多余的吧
回复 支持 反对

使用道具 举报

4

主题

13

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2014-2-20
在线时间
0 小时
发表于 2014-2-27 15:05:38 | 显示全部楼层
回复【9楼】xiaochangb:
---------------------------------
你搞懂为什么先设置中断服务函数,才可以进入中断函数了没?
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-8-15
在线时间
4 小时
发表于 2014-5-3 00:17:39 | 显示全部楼层
实际上是WWDG的中断没有成功的进入哈,在WWDG_Init()里面加上下面这句就可以了


NVIC->ISER[0]|=1<<0;
回复 支持 反对

使用道具 举报

15

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2014-4-29
在线时间
299 小时
发表于 2014-5-19 18:52:26 | 显示全部楼层
回复【9楼】xiaochangb:
---------------------------------
我也遇到过同样的问题。在WWDG_Init初始化的函数里,我把NVIC的配置的函数逐行往后移动,发现WWDG_NVIC_Init();在WWDG_SetWindowValue(wr);之前,则能够进入看门狗中断 
WWDG_NVIC_Init();在WWDG_SetWindowValue(wr);之后,则不能进入看门狗中断。
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2014-6-8
在线时间
0 小时
发表于 2014-11-8 11:40:21 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,想请问一下:如果窗口开门狗中断是在0x40这个下窗口进入中断的话,那么上窗口值0x5f的作用是什么啊?
我看的是库函数版本的,在窗口开门狗初始化中有设置 u8 wr=0x5f 这个值,但是我没发现这个值的作用,很困惑。能不能帮忙解答一下,谢谢!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-8 13:56:12 | 显示全部楼层
回复【17楼】qian_zj:
---------------------------------
你再看看窗口看门狗的原理(有个图)。
就知道上窗口干啥用的了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

虚浮年华 该用户已被删除
发表于 2015-9-8 08:47:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

29

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
247
金钱
247
注册时间
2015-4-26
在线时间
5 小时
发表于 2015-9-10 17:35:03 | 显示全部楼层
多谢分享!!
回复 支持 反对

使用道具 举报

youyouelite 该用户已被删除
发表于 2017-1-12 08:58:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2017-7-23
在线时间
5 小时
发表于 2017-7-27 18:11:07 | 显示全部楼层
PGP_0121 发表于 2015-7-24 10:43
回复【11楼】xuper2455:
---------------------------------我是新手,,,发现的问题的根本是窗口看门狗的 ...

确实,我下载的原子的程序里也是缺少这句,加上就可以进入中断了
回复 支持 反对

使用道具 举报

11

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2017-12-16
在线时间
15 小时
发表于 2017-12-17 00:00:41 | 显示全部楼层
是的,设置cfr的第10位是1(早期唤醒中断使能),只要计数器达到0x40就会产生中断
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-23 20:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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