Kian Cai 发表于 2026-5-26 11:15:20

【已解决】STC32G144K246 无法软复位 IAP_CONTR

STC32G144K246 无法软复位 IAP_CONTR

项目中需要用到软件复位重启的功能,但是执行到这里就卡死了。设备也无法重启。      

void Sys_Soft_Reset()
{

EA=0;
IRC48MCR = 0x00;
USBCLK = 0x00;
USBCON = 0x00;   
delay_ms(200);
IAP_CONTR = 0x20;
}


何故? 何解? 在线等。。。

另外自己测试过通过看门狗重启是正常的。。。 为何软件重启就不行。。。




Kian Cai 发表于 2026-5-26 14:37:35



    我初始化程序里面有PLL高频。

    然后复位之前,一定要先关闭这个PLL倍频,因为软件重启的时候, 时钟频率寄存器不会更改。这个频率太高了。 启动 的时候时钟好像跑不起来。
   
    CLKSEL = 0x00;      // 切换主时钟到内部IRC(避开PLL)
    HPLLCR &= ~0x80;      // 关闭PLL使能位
    delay_ms(10);

    IAP_CONTR = 0x20;      // 设置SWRST=1, SWBS=0

ercircle 发表于 2026-5-26 15:50:03

Kian Cai 发表于 2026-5-26 14:37
问题搞定了, 强烈建议 手册增加这个提示。

    我初始化程序里面有PLL倍频。

Kian Cai 发表于 2026-5-26 18:22:25

ercircle 发表于 2026-5-26 15:50


USB 我关了也不行,一楼发帖里面就是这样写的。    后面单独测试了一个程序,把PLL关闭后就正常了。      

Kian Cai 发表于 2026-5-26 18:23:17

这个测试就正常了。

Kian Cai 发表于 2026-5-26 18:35:55

ercircle 发表于 2026-5-26 15:50


{:4_197:}感谢感谢,看到了。   
页: [1]
查看完整版本: 【已解决】STC32G144K246 无法软复位 IAP_CONTR