问答

汇集网友智慧,解决技术难题

21ic问答首页 - hc32F460 的SWDT怎么关闭?

单片机 HC hc32f460 HC32F4 寄存器 ic

hc32F460 的SWDT怎么关闭?

Tianziaicai2025-06-13
在ICG0寄存器中,SWDT 的 SWDTAUTS 位为0,默认打开,但这个寄存器只可读,我该怎么修改这个寄存器的这一位呢?
回答 +关注 1
2148人浏览 3人回答问题 分享 举报
3 个回答
  • 要关闭 SWDT,需要通过特定的时序操作来实现。
  • 系统看门狗定时器的自动启动特性 确实由 ICG0 寄存器控制,且该位默认置 1 且为只读状态。
  • #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) {
            // 主循环代码
        }
    }

您需要登录后才可以回复 登录 | 注册