找回密码
 立即注册
查看: 679|回复: 7

STC32 看门狗的疑惑

[复制链接]

8

主题

12

回帖

86

积分

注册会员

积分
86
发表于 2023-12-1 11:36:47 | 显示全部楼层 |阅读模式




给程序添加看门狗,keil环境会崩溃,随机性的,今天用keil调试也疯狂弹出这个,是什么原因?
主程序不是很多,24M主频,看门狗32分频,约500多毫秒复位
截图202312011133502497.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:395
  • 最近打卡:2025-05-07 07:52:03

45

主题

381

回帖

1591

积分

金牌会员

静坐常思己过,闲谈莫论人非

积分
1591
发表于 2023-12-1 11:49:39 | 显示全部楼层
把程序贴上来看看
处事要代人所想,读书需切己用功
回复 支持 反对

使用道具 举报 送花

8

主题

12

回帖

86

积分

注册会员

积分
86
发表于 2023-12-1 14:44:35 | 显示全部楼层
  1. void main(void)
  2. {
  3.     u8 i,n,sr;
  4.     WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
  5.     EAXFR = 1; //扩展寄存器(XFR)访问使能
  6.     CKCON = 0; //提高访问XRAM速度
  7.     P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
  8.     P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
  9.     P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
  10.     P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
  11.     P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
  12.     P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
  13.     P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
  14.     P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
  15.        
  16.     P24 = 0;
  17.        
  18.     CANInit();
复制代码

发现程序刚开始执行的初始化时间好像太长了,我用示波器监测P24,开发板上电后(P24 = 3.38V)变成0V的时间,发现大概需要340ms左右,而看门狗开启后,复位的程序会保留看门狗寄存器的内容,导致初始化还没跑完就立刻复位了,也就是KEIL提示的丢失目标。看门狗设置成128分频,系统时钟24M,复位时间大概2秒,KEIL下载程序就不会弹出目标丢失了。
但对看门狗还是很疑惑,复位后的程序是否还会保留看门狗的配置,我看手册描述的是所有寄存器都会变为初始值,可实际现象应该是没有清除看门狗的使能的,而且我复制的初始化代码为什么会执行那么长的时间,大家有测试过吗?请假一下,谢谢
截图202312011440257683.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:395
  • 最近打卡:2025-05-07 07:52:03

45

主题

381

回帖

1591

积分

金牌会员

静坐常思己过,闲谈莫论人非

积分
1591
发表于 2023-12-1 15:38:49 | 显示全部楼层
miemi*** 发表于 2023-12-1 14:44
发现程序刚开始执行的初始化时间好像太长了,我用示波器监测P24,开发板上电后(P24 = 3.38V)变成0V的时 ...
刚开始执行的初始化时间

你说的这个初始化指的是什么?300ms未免太长了吧
处事要代人所想,读书需切己用功
回复 支持 反对

使用道具 举报 送花

8

主题

12

回帖

86

积分

注册会员

积分
86
发表于 2023-12-1 16:48:05 | 显示全部楼层
reng*** 发表于 2023-12-1 15:38
你说的这个初始化指的是什么?300ms未免太长了吧

代码就是我贴的这么多,我测试的方式不对,我把程序跑到P27引脚被拉低,当作初始化的时间,用示波器看大概是340ms(由3.38v到0v)。但现在主要想知道STC32的看门狗是硬件看门狗吗?我看手册上写的是属于“硬件复位”,并且看门狗致使复位后,其寄存器是否在复位后变成初始值,还是之前程序设置的数据和使能?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:395
  • 最近打卡:2025-05-07 07:52:03

45

主题

381

回帖

1591

积分

金牌会员

静坐常思己过,闲谈莫论人非

积分
1591
发表于 2023-12-1 16:59:46 | 显示全部楼层
miemi*** 发表于 2023-12-1 16:48
代码就是我贴的这么多,我测试的方式不对,我把程序跑到P27引脚被拉低,当作初始化的时间,用示波器看大 ...

即使复位看门狗寄存器,进入MAIN函数以后还是会重新配置,看门狗继续作用
处事要代人所想,读书需切己用功
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:416
  • 最近打卡:2025-05-06 08:57:51
已绑定手机

39

主题

2010

回帖

6859

积分

论坛元老

积分
6859
发表于 2023-12-1 17:34:52 | 显示全部楼层
miemi*** 发表于 2023-12-1 16:48
代码就是我贴的这么多,我测试的方式不对,我把程序跑到P27引脚被拉低,当作初始化的时间,用示波器看大 ...

尽量不要通过STC-ISP软件的硬件选项开启看门狗,为了等待电源稳定默认设置“上电复位使用较长延时”以及ISP检测是否需要烧录,需要300ms左右时间,再加上用户初始化代码,如果看门狗溢出复位时间设置比较短的话,可能还没执行到喂狗程序就产生复位了。建议在初始化程序里通过软件启动看门狗。
看门狗复位属于硬件复位,复位后寄存器恢复默认值。
回复 支持 反对

使用道具 举报 送花

8

主题

12

回帖

86

积分

注册会员

积分
86
发表于 2023-12-1 20:05:32 | 显示全部楼层
乘风*** 发表于 2023-12-1 17:34
尽量不要通过STC-ISP软件的硬件选项开启看门狗,为了等待电源稳定默认设置“上电复位使用较长延时”以及I ...

我用KEIL烧录的,就按手册上说的WDT_CONTR寄存器,EN_WDT来开启看门狗的,手册上说看门狗是硬件复位方式,可以看我上面发的图片。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-7 14:39 , Processed in 0.125691 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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