#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) {
// 主循环代码
}
}
|