stm32 iwdg看门狗的使用问题?问题已解决

[复制链接]
9590|20
 楼主| 芯行天下 发表于 2009-5-25 10:28 | 显示全部楼层 |阅读模式
写了个看门狗程序,可是却不工作,不知何原因,大家指点一二。
/*******************************************************************************
* Function Name  : IWDG_Configuration
* Description    : Configures IWDG.
* Input          : None
* Output         : None
* Return         : None
* 备注        : 看门狗时长约为800ms
*******************************************************************************/
void IWDG_Configuration(uint16 dogtime)
{
  /* IWDG timeout equal to 819 ms (the timeout may varies due to LSI frequency
     dispersion) -------------------------------------------------------------*/
  /* Enable write access to IWDG_PR and IWDG_RLR registers */
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

  /* IWDG counter clock: 40KHz(LSI) / 8 = 5 KHz */
  IWDG_SetPrescaler(IWDG_Prescaler_8);

  /* Set counter reload value to 0xfff */
  IWDG_SetReload(dogtime);

  /* Reload IWDG counter */
  IWDG_ReloadCounter();

  /* Enable IWDG (the LSI oscillator will be enabled by hardware) */
  IWDG_Enable();
}
 楼主| 芯行天下 发表于 2009-5-25 10:30 | 显示全部楼层

IWDG寄存器设置

 楼主| 芯行天下 发表于 2009-5-25 10:31 | 显示全部楼层

RCC寄存器设置

香水城 发表于 2009-5-25 10:45 | 显示全部楼层

为什么说IWDG不工作?

从3楼的贴图看:RCC_CSR=0x28000003,bit29=1表示已经产生看门狗复位,为什么说IWDG不工作?
 楼主| 芯行天下 发表于 2009-5-25 10:50 | 显示全部楼层

可是从我的程序运行效果上来看并没有发现程序复位的

从我的程序运行效果上来看,并没有发现程序复位的。
香水城 发表于 2009-5-25 10:55 | 显示全部楼层

什么程序?程序的运行效果是什么样的?

请问你的复位电路是什么样的?

关于判断程序是否复位,很简单的办法是在调试时,在程序开始放置一个断点,如果程序运行后又停到这个断点,就表示有复位产生。
 楼主| 芯行天下 发表于 2009-5-25 10:59 | 显示全部楼层

运行效果

这是运行效果,如果复位,程序应该能停在第一个断点的,可是程序一直停在第二个断点处。
硬件就是ST这次送的三合一小板。
香水城 发表于 2009-5-25 11:18 | 显示全部楼层

看不出程序有什么问题

不要设置断点,直接运行试试。
 楼主| 芯行天下 发表于 2009-5-25 11:22 | 显示全部楼层

实际运行时当然不会加第二个断点了,

第二个断点是我为了好看清图才加的,运行时当然没有第二个断点了。
呵呵,那是不行的,点击运行,不管等多长时间,再点停止,光标还是落在WHIEL(1)处的。程序就是不复位,很是不解呀。看寄存器都符合手册中说的。
静默 发表于 2009-5-25 11:38 | 显示全部楼层

不要用STLINK供电.

不要用STLINK供电, 你就可以看到看门狗的动作了. 点几个灯看看.
 楼主| 芯行天下 发表于 2009-5-25 13:05 | 显示全部楼层

多谢楼上,不用STLINK供电,果然可以

多谢楼上,不用STLINK供电,看门狗可以正常工作。问题解决。

不知为什么用STLINK的时候,看门狗不工作,有哪位解释一下。难不成这就是文档中说的调试模式。
vigia 发表于 2009-5-25 15:17 | 显示全部楼层

我把ST的IWDG的例子移植到了3和1板子上试了试

可以产生复位信号的么。

LZ还是再检查下自己的程序。

移植的代码我先放上来你试试。
相关链接:https://bbs.21ic.com/upfiles/img/20095/2009525151456680.zip
 楼主| 芯行天下 发表于 2009-5-26 09:03 | 显示全部楼层

多谢楼上,不知你的程序用STLINK能否正常复位

vigia 发表于 2009-5-26 09:28 | 显示全部楼层

可以阿

我就是用3合1的板子做的测试

难道你的不可以?
 楼主| 芯行天下 发表于 2009-5-26 09:31 | 显示全部楼层

呵呵,我的是在LINK供电下不可以,单独供电就可以了

在仿真时不行,不用LINK单独供电可以复位。
vigia 发表于 2009-5-26 09:39 | 显示全部楼层

你试过我的代码了吗?

用ST-Link调试,不能复位吗?

 楼主| 芯行天下 发表于 2009-5-26 13:05 | 显示全部楼层

还没有试,

楼上的开发环境是5.0以上的,我用的是4.22A的版本。等晚上再试。
PackBot 发表于 2010-8-16 20:38 | 显示全部楼层
:)刚刚从该讨论中受益,嘿嘿,
yybj 发表于 2010-8-17 09:02 | 显示全部楼层
这种问题似乎很常见,以后我也知道怎么解决了,嘿嘿
hitajian 发表于 2010-9-22 15:19 | 显示全部楼层
The user must ensure that the level on the NRST pin can go below the VIL(NRST) max level。 Otherwise the reset will not be taken into account by the device.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

87

主题

660

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部