hc32F460 的SWDT怎么关闭?
在ICG0寄存器中,SWDT 的 SWDTAUTS 位为0,默认打开,但这个寄存器只可读,我该怎么修改这个寄存器的这一位呢?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) {
// 主循环代码
}
}
系统看门狗定时器的自动启动特性 确实由 ICG0 寄存器控制,且该位默认置 1 且为只读状态。 要关闭 SWDT,需要通过特定的时序操作来实现。
页:
[1]