OpenEdv-开源电子网

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

STM32单片机的看门狗问题

[复制链接]

4

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-11
在线时间
7 小时
发表于 2017-7-23 16:05:46 | 显示全部楼层 |阅读模式
1金钱
看门狗初始化,溢出时间是6.4ms
#include "iwdg.h"
void InitIWDG(void)
{
        IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
        IWDG_SetPrescaler(IWDG_Prescaler_256);               // 40K/256=156HZ(6.4ms)
        IWDG_SetReload(1250);                                           // 1250 = 8s/6.4ms
        IWDG_ReloadCounter();       // Î11·
        IWDG_Enable();
}
如果下面的程序中的延时时间为2000ms,来一次喂狗,岂不是还没延时完成就已经看门狗复位了?

void PowerOFFPhone(void)
{
        GPIO_WriteBit(GPIOB, RestPhone, Bit_RESET);
        SoftDelayms(2000);
        IWDG_ReloadCounter();
        SoftDelayms(2000);
        IWDG_ReloadCounter();
        SoftDelayms(2000);
        IWDG_ReloadCounter();
        SoftDelayms(2000);
        IWDG_ReloadCounter();
        SoftDelayms(2000);
        IWDG_ReloadCounter();
        SoftDelayms(1000);
        IWDG_ReloadCounter();
        GPIO_WriteBit(GPIOB, RestPhone, Bit_SET);
        BKP_WriteBackupRegister(BKP_DR1, 0X0000);    // phone off state
}


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

使用道具 举报

0

主题

92

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1216
金钱
1216
注册时间
2016-7-17
在线时间
143 小时
发表于 2017-7-23 17:50:05 | 显示全部楼层
就是那样了,你可以把延时弄到for循环里,延时几毫秒就喂食一次
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6661
金钱
6661
注册时间
2016-5-29
在线时间
909 小时
发表于 2017-7-23 20:55:35 | 显示全部楼层
不使用延时函数
回复

使用道具 举报

4

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-11
在线时间
7 小时
 楼主| 发表于 2017-7-23 21:21:33 | 显示全部楼层

如果程序中需要用到10ms以上的延时,看门狗只有6.4ms溢出,怎么处理?
回复

使用道具 举报

4

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-11
在线时间
7 小时
 楼主| 发表于 2017-7-23 21:23:21 | 显示全部楼层
虾兵蟹将 发表于 2017-7-23 17:50
就是那样了,你可以把延时弄到for循环里,延时几毫秒就喂食一次

如果程序中需要用到10ms以上的延时,看门狗只有6.4ms溢出,怎么处理?
for(i=0;i<N;i++)
{
delay_ms(5);
喂狗;
}
是这样?
回复

使用道具 举报

0

主题

92

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1216
金钱
1216
注册时间
2016-7-17
在线时间
143 小时
发表于 2017-7-23 21:26:00 | 显示全部楼层
water2017 发表于 2017-7-23 21:23
如果程序中需要用到10ms以上的延时,看门狗只有6.4ms溢出,怎么处理?
for(i=0;i

这样应该可以
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6661
金钱
6661
注册时间
2016-5-29
在线时间
909 小时
发表于 2017-7-23 21:33:52 | 显示全部楼层
water2017 发表于 2017-7-23 21:21
如果程序中需要用到10ms以上的延时,看门狗只有6.4ms溢出,怎么处理?

延时方法多的是.最差的一种就是 延时函数.建议使用定时器或者时钟节拍.记数来延时.
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-12-23 07:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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