




想知道为什么上电就会有看门狗复位标志和代码区溢出标志
按照手册说明,RSTFLAG上电读出来的值应该是0x14,我读出来的值却是0x1A
我有使用了看门狗,但是我24M的主频,设置了256分频,喂狗时间间隔为40ms,理论上不会溢出才对
使用其他评论区提供的工程直接测试
void main()
{
P_SW2 |= 0x80; //扩展寄存器访问使能
UartStdOutInit();
printf("Start!!!\r\n");
printf("RSTFLAG %bx\r\n",RSTFLAG);
if(RSTFLAG & 0x10) //LVDRSTF
{
RSTFLAG |= 0x10; //写1清除标志位
printf("LVD reset\r\n");
}
if(RSTFLAG & 0x08) //WDTRSTF
{
RSTFLAG |= 0x08; //写1清除标志位
printf("Watchdog reset\r\n");
}
if(RSTFLAG & 0x04) //SWRSTF
{
RSTFLAG |= 0x04; //写1清除标志位
printf("Software reset\r\n");
}
if(RSTFLAG & 0x02) //ROMOVF
{
RSTFLAG |= 0x02; //写1清除标志位
printf("ROM Overflow reset\r\n");
}
if(RSTFLAG & 0x01) //EXRSTF
{
RSTFLAG |= 0x01; //写1清除标志位
printf("External reset\r\n");
}
// WDT_CONTR = 0x23; //使能看门狗,溢出时间约为0.5s
//WDT_CONTR = 0x24; //使能看门狗,溢出时间约为1s
// WDT_CONTR = 0x27; //使能看门狗,溢出时间约为8s
// temp = 123;
while (1)
{
// WDT_CONTR |= 0x10; //清看门狗,否则系统复位
}
}

