OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 2280|回复: 10

求助高手:窗口看门狗APB1时钟分频系数变化使得看门狗不停复位,这块感觉有问题

[复制链接]

  离线 

1

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-2-22
在线时间
8 小时
发表于 2017-2-23 08:58:54 | 显示全部楼层 |阅读模式
4金钱
我用的是探索者407开发板,最近一直在调窗口看门狗,采用的是中断喂狗,遇到两个问题:
1、我将例程中断喂狗的程序中的led1翻转的语句注释掉,其他什么都不动,程序会一直复位,即红灯不停地闪烁,这个问题我一直想不通为什么?难道喂狗不能太快!
捕获.PNG
2、例程给的是APB1进行4分频,看门狗进行8分频;我修改了APB1的时钟,对APB1进行8分频,看门狗进行4分频,按道理这样分频看门狗的时钟是不会变的,但是这样改完以后原来的例程会不停地复位,这样解决地办法是LED翻转程序后面加上延时,我延时了20ms,看门狗可以喂狗,程序可以正常运行。我改的地方如下:
修改APB1时钟部分:stm32f4xx.c文件中
捕获.PNG
中断喂狗部分:
捕获.PNG
这两个问题是我百思不得其解,希望原子哥和各位高手帮我看看问题出在哪了???谢谢啦

回复

使用道具 举报

  离线 

505

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
131656
金钱
131656
注册时间
2010-12-1
在线时间
1211 小时
发表于 2017-2-23 20:32:01 | 显示全部楼层
窗口看门狗的东西有点奇葩,你别随便乱改。尤其是中断服务函数里面的,稍有不慎,就不行了。原因我也找不出,你就忍忍吧。
回复

使用道具 举报

  离线 

1

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-2-22
在线时间
8 小时
 楼主| 发表于 2017-2-27 14:51:40 | 显示全部楼层
正点原子 发表于 2017-2-23 20:32
窗口看门狗的东西有点奇葩,你别随便乱改。尤其是中断服务函数里面的,稍有不慎,就不行了。原因我也找不出 ...

原子哥,这个窗口看门狗,项目中要用,在ucos系统要用它!只要不影响功能就行?
回复

使用道具 举报

  离线 

505

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
131656
金钱
131656
注册时间
2010-12-1
在线时间
1211 小时
发表于 2017-2-27 21:43:59 | 显示全部楼层
松花江畔玩STM32 发表于 2017-2-27 14:51
原子哥,这个窗口看门狗,项目中要用,在ucos系统要用它!只要不影响功能就行?

嗯,可以,直接用我们例程这样,及时喂狗。就OK了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

1

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-2-22
在线时间
8 小时
 楼主| 发表于 2017-3-2 10:40:06 | 显示全部楼层
正点原子公众号
正点原子 发表于 2017-2-27 21:43
嗯,可以,直接用我们例程这样,及时喂狗。就OK了。

可是我还在想为什么中断里屏蔽掉LED翻转这条语句,看门狗会不停的复为;我就担心这块存在隐患
回复

使用道具 举报

  离线 

505

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
131656
金钱
131656
注册时间
2010-12-1
在线时间
1211 小时
发表于 2017-3-6 21:01:37 | 显示全部楼层
松花江畔玩STM32 发表于 2017-3-2 10:40
可是我还在想为什么中断里屏蔽掉LED翻转这条语句,看门狗会不停的复为;我就担心这块存在隐患

//窗口看门狗中断服务程序
void WWDG_IRQHandler(void)
{      
        static u8 led1sta=1;
        if(WWDG->SR&0X01)                //先判断是否发生了WWDG提前唤醒中断
        {
                WWDG->SR=0X00;                                //清除提前唤醒中断标志位
                WWDG_Set_Counter(WWDG_CNT);        //重设窗口看门狗的值!         
                LED1(led1sta^=1);                         //LED1闪烁
        }
}

试试这个代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

2

主题

12

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2017-3-14
在线时间
9 小时
发表于 2017-3-23 12:09:12 | 显示全部楼层
正点原子 发表于 2017-2-27 21:43
嗯,可以,直接用我们例程这样,及时喂狗。就OK了。

原子哥 为什么我在main函数里调用了延时1s 在助手上却一直显示中断里的 喂狗了  延时不是1s啊  百思不得其解
回复

使用道具 举报

  离线 

15

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
181
金钱
181
注册时间
2017-7-17
在线时间
37 小时
发表于 2018-2-8 09:55:48 | 显示全部楼层
正点原子 发表于 2017-2-27 21:43
嗯,可以,直接用我们例程这样,及时喂狗。就OK了。

在中断中喂狗还能起到看门狗的作用吗?这样不是程序跑飞也不会复位吗?
回复

使用道具 举报

  离线 

505

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
131656
金钱
131656
注册时间
2010-12-1
在线时间
1211 小时
发表于 2018-2-19 23:40:19 | 显示全部楼层
开心的人们 发表于 2018-2-8 09:55
在中断中喂狗还能起到看门狗的作用吗?这样不是程序跑飞也不会复位吗?

程序跑飞了,哪里还管你中断?中断都不会执行了!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2017-12-12
在线时间
10 小时
发表于 2018-4-5 16:47:12 | 显示全部楼层
正点原子 发表于 2018-2-19 23:40
程序跑飞了,哪里还管你中断?中断都不会执行了!

正在学习中,今天恰好也发现了这个问题,
我也很郁闷啊,为什么屏蔽掉LED1 = !LED1 后就一直复位
我加了个延时delay_ms(1)  之后正常运行
请问现在原子哥你知道这个问题的原因了吗
回复

使用道具 举报

  离线 

505

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
131656
金钱
131656
注册时间
2010-12-1
在线时间
1211 小时
发表于 2018-4-7 02:42:23 | 显示全部楼层
半梦扮醒 发表于 2018-4-5 16:47
正在学习中,今天恰好也发现了这个问题,
我也很郁闷啊,为什么屏蔽掉LED1 = !LED1 后就一直复位
我加 ...

窗口看门狗里面的代码,不要随便改,容易出问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则




关闭

必看:"原子哥”力荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-8-22 04:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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