你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
查看全部评分
linalinb 发表于 2018-8-27 09:50 实验测试不喂狗是可以正常复位,说明配置应该是正确的,我配置的是6秒次溢出,但在车间使用是还会偶尔出 ...
wenyangzeng 发表于 2018-8-27 10:24 看门狗好像要做到6秒有点困难,楼主不妨缩短时间。2秒差不多了。
安 发表于 2018-8-27 10:05 测试一下晶振是否正常工作。我发生过类似的问题,是因为晶振停止导致的。 ...
wenyangzeng 发表于 2018-8-27 10:29 太长延时,看门狗i容易受外部干扰
linalinb 发表于 2018-8-27 10:37 这个倒没注意到,说不定真有可能这个原因,不过晶振停振一般会是什么原因造成的呢?难道是干扰造成吗? ...
linalinb 发表于 2018-8-27 10:42 因为程序执行量比较大,执行完整个周期需要4秒左右,为了保险一点就设为6秒,如果看门狗受了干扰就会停吗 ...
wenyangzeng 发表于 2018-8-27 10:55 就是担心那么长的延时,看门狗计数器受干扰失效。
linalinb 发表于 2018-8-27 11:09 有道理,不过设短了就要在其它地方再加喂狗指令了,我担心在其它地方加多了喂狗指令,如果跑飞会更容易被 ...
STM32隐藏
5.18活动板子会不会是STM32L4呢
STM32 CUBE软件中找不到STM32L4系列单片机
Your UAT Feedback is needed within today.
应用
AAA
tiwen
BBBB
aaa
2222
评分
查看全部评分
看门狗好像要做到6秒有点困难,楼主不妨缩短时间。2秒差不多了。
// 硬件看门狗配置
void IWDG_Config(void)
{
/* Enable write access to IWDG_PR and IWDG_RLR registers */
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
/* IWDG counter clock: LSI/32 */
IWDG_SetPrescaler(IWDG_Prescaler_64); //40khz/64=0.625khz=1.6ms
/* Set counter reload value to obtain 250ms IWDG TimeOut.
Counter Reload Value = 250ms/IWDG counter clock period
= 250ms / (LSI/32)
= 0.25s / (LsiFreq/32)
= LsiFreq/(32 * 4)
= LsiFreq/128
*/
IWDG_SetReload(4000); // 1.6msX4000=6.4s 0xfff is max
/* Reload IWDG counter */
IWDG_ReloadCounter();
/* Enable IWDG (the LSI oscillator will be enabled by hardware) */
IWDG_Enable();
}
这个配置是6秒多,应该是没错的
太长延时,看门狗i容易受外部干扰
评分
查看全部评分
这个倒没注意到,说不定真有可能这个原因,不过晶振停振一般会是什么原因造成的呢?难道是干扰造成吗?
因为程序执行量比较大,执行完整个周期需要4秒左右,为了保险一点就设为6秒,如果看门狗受了干扰就会停吗?还有假设外部晶振停振的话, 会不会影响看门狗的工作呢?
干扰造成的。
就是担心那么长的延时,看门狗计数器受干扰失效。
有道理,不过设短了就要在其它地方再加喂狗指令了,我担心在其它地方加多了喂狗指令,如果跑飞会更容易被死循环喂狗,因为在客户2班倒生产,产线上24小时长期不停机工作,要求非常严格,不允许出现死机的情况。
其实喂狗只放在主循环并不很安全。在所有do{}while()都要放。你不能保证这些do{}while()里会出现何种意外。