本帖最后由 zjk103 于 2025-12-12 16:43 编辑
MCXA346VLH看门狗定时器(WDT)的使用方法是什么?
MCXA346VLH看门狗定时器(WDT)的使用方法如下: 1. 看门狗定时器简介MCXA346VLH内置看门狗定时器,用于检测和恢复系统故障。如果主程序未能定期重置看门狗,系统将自动复位。 2. 主要特性独立时钟源(内部RC振荡器) 可配置超时时间 支持窗口模式 低功耗模式下可配置行为 支持中断或复位操作
3. 基本使用步骤步骤1:初始化看门狗c
#include "fsl_wdog.h"void WDOG_Init(void){ wdog_config_t config; // 获取默认配置 WDOG_GetDefaultConfig(&config); // 配置参数 config.timeoutValue = 0xFFF; // 超时值 config.enableWdog = true; // 使能看门狗 config.clockSource = kWDOG_LpoClockSource; // 时钟源 config.prescaler = kWDOG_ClockPrescalerDivide1; // 分频 // 初始化看门狗 WDOG_Init(WDOG1, &config);}步骤2:定期喂狗c
void Feed_Watchdog(void){ WDOG_Refresh(WDOG1); // 重置看门狗计数器}// 在主循环中定期调用while(1){ // 业务代码 // 定期喂狗(必须在超时前调用) Feed_Watchdog();}4. 配置选项超时时间计算text
超时时间 = (TimeoutValue + 1) / (WDOG时钟频率 / 分频系数)窗口模式配置c
config.enableWindowMode = true; // 使能窗口模式config.windowValue = 0x800; // 设置窗口值中断配置c
config.workMode.enableInterrupt = true; // 使能中断config.workMode.enableReset = false; // 禁用复位// 配置中断EnableIRQ(WDOG1_IRQn);NVIC_SetPriority(WDOG1_IRQn, 3);5. 完整示例代码c
#include "fsl_wdog.h"#include "board.h"// 看门狗中断处理函数void WDOG1_IRQHandler(void){ // 处理看门狗中断 if (WDOG_GetStatusFlags(WDOG1) & kWDOG_InterruptFlag) { WDOG_ClearInterruptStatus(WDOG1, kWDOG_InterruptFlag); // 执行恢复操作 } __DSB();}void Init_Watchdog(void){ wdog_config_t config; // 获取默认配置 WDOG_GetDefaultConfig(&config); // 自定义配置 config.timeoutValue = 0x1000; // 设置超时值 config.enableWdog = true; // 使能看门狗 config.clockSource = kWDOG_LpoClockSource; config.prescaler = kWDOG_ClockPrescalerDivide4; config.enableWindowMode = false; // 禁用窗口模式 config.windowValue = 0; // 工作模式配置 config.workMode.enableInterrupt = false; // 使用复位模式 config.workMode.enableReset = true; config.workMode.enablePowerDown = false; config.workMode.enableTimeOutAssert = true; // 初始化看门狗 WDOG_Init(WDOG1, &config);}int main(void){ // 硬件初始化 BOARD_InitBootClocks(); BOARD_InitBootPins(); // 初始化看门狗 Init_Watchdog(); while(1) { // 主程序逻辑 // 定期喂狗(必须小于超时时间) WDOG_Refresh(WDOG1); // 延时或其他操作 SDK_DelayAtLeastUs(100000, SystemCoreClock); }}6. 注意事项一次性使能:看门狗一旦使能,通常无法通过软件禁用 喂狗时机:确保在超时前喂狗,但不要太频繁 时钟源:使用独立时钟源,即使主时钟故障也能工作 调试模式:在调试时可能需要禁用看门狗 低功耗模式:根据需求配置在低功耗模式下的行为
7. 调试建议c
// 在开发阶段,可以添加调试代码#define WATCHDOG_DEBUG 1#if WATCHDOG_DEBUG // 添加喂狗状态监控 // 或临时禁用看门狗 // config.enableWdog = false;#endif使用MCXA346VLH的看门狗时,请参考官方参考手册和SDK示例代码,确保正确配置所有参数。
|