[方案相关] hc32F460 的SWDT怎么关闭?

[复制链接]
 楼主| Tianziaicai 发表于 2025-6-13 09:46 | 显示全部楼层 |阅读模式
在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

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部