15564|7

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于仿真时看门狗复位问题 [复制链接]

我刚刚得到了一个仿真器,JLINK
用来仿真stm32f101c8这款片子~我发现了点问题~我跟踪的时候发现,全速运行没有问题。只要我设置断点,程序运行到断点处停下来后,什么也不操作等1秒左右程序就自动复位。单步运行,几段代码后,系统也复位。我先以为是我仿真器的问题,但是后来发现:不是仿真器的时,是看门狗的问题。我在程序运行的时候,如果没有进入设置看门狗这段程序,等多久也不复位,但是如果看门狗初始化完了,不管那段程序,只要停下来,也就是说没有及时喂狗(推测),系统就复位,这是什么原因呀?
为什么设置断点停下来后,看门狗的定时器,没有停下来呀?
不知道是我程序设置的问题还是软件设置的问题,我用的是keil
看门狗程序附上:
void dog_init(uint16 interval)
{
volatile uint16 wait=0;

//内部低速振荡器开启
RCC->CSR|=(1<<0);
while(!(RCC->CSR&(1<<1)));


while(IWDG->SR);//等待可以写入
//设置看门狗间隔
IWDG->KR=0x5555;//解锁
if(interval==5)IWDG->PR=5;//分频器
else if(interval==30)IWDG->PR=7;//分频器
IWDG->KR=0x5555;//解锁
if(interval==5)IWDG->RLR=0x200;//计数器预装载
else if(interval==30)IWDG->RLR=0xFFF;//计数器预装载
for(wait=0;wait<100;wait++);
//启动看门狗
IWDG->KR=0xCCCC;
//喂狗
IWDG->KR=0xAAAA;
}
此帖出自stm32/stm8论坛

最新回复

                                 这个寄存器应该是由仿真软件来设置的。 不应该由用户程序来处理。 这个寄存器是由开发者设置,但不一定是通过用户程序来处理。 如果开发者希望调试停止时,看门狗的计数器依然工作,则可以通过仿真软件来清除相应的寄存器位;如果开发者希望调试停止时,看门狗的计数器停止工作,则可以通过仿真软件来设置相应的寄存器位;当然这个清除或设置的操作,也可以使用临时的调试程序,即用户程序来处理。 STM32中提供这个寄存器位,就是把调试的选择权交给开发者,你爱怎么用就怎么用,让开发者有充分发挥的余地。  详情 回复 发表于 2010-5-28 09:37
点赞 关注
 

回复
举报

60

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我看到资料上说 stm32 分调试状态和非调试状态~
在调试状态下DBGMCU_CR设置
此帖出自stm32/stm8论坛
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 在STM32中,如果要求设置断点停下来后,暂停看门狗的定时器,需要设置DBGMCU_CR中的对应位。
此帖出自stm32/stm8论坛
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 
DBGMCU_CR里面包括了四种计数器的开关~
如果是仿真状态下,是不是应该都设置为停止?

QQ截图未命名.jpg (72.97 KB)

QQ截图未命名.jpg

此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 芯片提供了这种机制,你可以根据需要自己选择设置哪一个,或设置所有;我不知道你的具体需求,无法告诉你具体怎么用。
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 具体需求要具体分析
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
这个寄存器应该是由仿真软件来设置的。
不应该由用户程序来处理。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
这个寄存器应该是由仿真软件来设置的。
不应该由用户程序来处理。
这个寄存器是由开发者设置,但不一定是通过用户程序来处理。

如果开发者希望调试停止时,看门狗的计数器依然工作,则可以通过仿真软件来清除相应的寄存器位;如果开发者希望调试停止时,看门狗的计数器停止工作,则可以通过仿真软件来设置相应的寄存器位;当然这个清除或设置的操作,也可以使用临时的调试程序,即用户程序来处理。

STM32中提供这个寄存器位,就是把调试的选择权交给开发者,你爱怎么用就怎么用,让开发者有充分发挥的余地。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表