我刚刚得到了一个仿真器,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;
} |