Tianziaicai 发表于 2025-6-13 09:46

hc32F460 的SWDT怎么关闭?

在ICG0寄存器中,SWDT 的 SWDTAUTS 位为0,默认打开,但这个寄存器只可读,我该怎么修改这个寄存器的这一位呢?

hbzjt2011 发表于 2025-6-24 13:22

hc32F460 的SWDT怎么关闭?

#include "hc32f460.h"

void disable_swdt(void)
{
    // 1. 解锁写保护
    M0P_PWC->FPRC = 0xA502;
    M0P_PWC->FPRC = 0xA500;

    // 2. 配置复位控制寄存器
    M0P_RSTCU->RST = 0x5A5A0000;// 复位控制解锁
    M0P_RSTCU->RST_f.SWDT = 1;    // 允许SWDT复位
    M0P_RSTCU->RST = 0x5A5AFFFF;// 重新上锁

    // 3. 启动SWDT但不提供喂狗
    // 这将导致芯片复位后SWDT自动关闭
    M0P_ICG0->SWDT_f.SWDTS = 0;   // 启动SWDT
}

int main(void)
{
    // 系统初始化...

    // 关闭SWDT
    disable_swdt();

    // 复位后程序将从这里重新开始执行
    // 此时SWDT将保持关闭状态

    while(1) {
      // 主循环代码
    }
}

9dome猫 发表于 2025-6-30 16:33

系统看门狗定时器的自动启动特性 确实由 ICG0 寄存器控制,且该位默认置 1 且为只读状态。

远芳侵古道 发表于 2025-6-30 23:33

要关闭 SWDT,需要通过特定的时序操作来实现。
页: [1]
查看完整版本: hc32F460 的SWDT怎么关闭?