8H1K08上电,外设初始化完之后打印复位标志寄存器(RSTFLAG)的值
<p><img src="data/attachment/forum/202412/21/114725zzo0hwknjlsvllno.png" alt="image.png" title="image.png" /></p><p><img src="data/attachment/forum/202412/21/114732anda2r8aigz2ba0a.png" alt="image.png" title="image.png" /><br />
<img src="data/attachment/forum/202412/21/143731mg6l4ymzqu97jj7h.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/21/114748e0jhia41f0g2i49k.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/21/114820v4cjmzeiaabdeeem.png" alt="image.png" title="image.png" /></p>
<p>想知道为什么上电就会有看门狗复位标志和代码区溢出标志</p>
<p>按照手册说明,RSTFLAG上电读出来的值应该是0x14,我读出来的值却是0x1A</p>
<p>我有使用了看门狗,但是我24M的主频,设置了256分频,喂狗时间间隔为40ms,理论上不会溢出才对</p>
<p>使用其他评论区提供的工程直接测试</p>
<p>void main()<br />
{<br />
P_SW2 |= 0x80;//扩展寄存器访问使能</p>
<pre><code>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");
}
</code></pre>
<p>//WDT_CONTR = 0x23; //使能看门狗,溢出时间约为0.5s<br />
//WDT_CONTR = 0x24; //使能看门狗,溢出时间约为1s<br />
//WDT_CONTR = 0x27; //使能看门狗,溢出时间约为8s</p>
<p>// temp = 123;<br />
while (1)<br />
{<br />
// WDT_CONTR |= 0x10; //清看门狗,否则系统复位<br />
}<br />
}</p>
<p><img src="data/attachment/forum/202412/21/165015cz2ogqogon2ohnuu.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202412/21/165001aa8ww3yqhbgm6b5d.png" alt="image.png" title="image.png" /></p>
<p><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11848&highlight=RSTFLAG&page=1&extra=#pid120829">这个看下</a></p>
邮箱 发表于 2024-12-21 22:35
这个看下
应该不是这个问题,我的料号是比较早的,那时候还没有AI8051,而且我的寄存器是能读到值的
页:
[1]