miemieyang 发表于 2023-12-1 11:36:47

STC32 看门狗的疑惑





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

rengran 发表于 2023-12-1 11:49:39

把程序贴上来看看

miemieyang 发表于 2023-12-1 14:44:35

void main(void)
{
    u8 i,n,sr;

    WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

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

rengran 发表于 2023-12-1 15:38:49

miemieyang 发表于 2023-12-1 14:44
发现程序刚开始执行的初始化时间好像太长了,我用示波器监测P24,开发板上电后(P24 = 3.38V)变成0V的时 ...

刚开始执行的初始化时间
你说的这个初始化指的是什么?300ms未免太长了吧

miemieyang 发表于 2023-12-1 16:48:05

rengran 发表于 2023-12-1 15:38
你说的这个初始化指的是什么?300ms未免太长了吧

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

rengran 发表于 2023-12-1 16:59:46

miemieyang 发表于 2023-12-1 16:48
代码就是我贴的这么多,我测试的方式不对,我把程序跑到P27引脚被拉低,当作初始化的时间,用示波器看大 ...

即使复位看门狗寄存器,进入MAIN函数以后还是会重新配置,看门狗继续作用

乘风飞扬 发表于 2023-12-1 17:34:52

miemieyang 发表于 2023-12-1 16:48
代码就是我贴的这么多,我测试的方式不对,我把程序跑到P27引脚被拉低,当作初始化的时间,用示波器看大 ...

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

miemieyang 发表于 2023-12-1 20:05:32

乘风飞扬 发表于 2023-12-1 17:34
尽量不要通过STC-ISP软件的硬件选项开启看门狗,为了等待电源稳定默认设置“上电复位使用较长延时”以及I ...

我用KEIL烧录的,就按手册上说的WDT_CONTR寄存器,EN_WDT来开启看门狗的,手册上说看门狗是硬件复位方式,可以看我上面发的图片。
页: [1]
查看完整版本: STC32 看门狗的疑惑