Files
CHJ/user/MCU/lhl_watchdog.c
2026-03-20 21:19:53 +08:00

63 lines
1.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "../main/SystemInclude.h"
/**------------------------------------------------------------------------
* @brief 系统 IWDG 初始化
* @note 该函数执行以下操作:
* - 停止默认运行的 IWDG上电后默认约20秒复位
* - 解锁写保护
* - 设置预分频器为 32 分频LSI 约 32kHz / 32 = 1kHz
* - 设置重装载值为 4000得到约 4 秒的复位周期
* - 启动 IWDG
* @warning 一旦调用本函数IWDG 即开始运行,必须在复位周期内喂狗,
* 否则系统复位。推荐在主循环或定时中断中调用 Clear_WDT()。
* @param 无
* @example SystemIWDGInit();
**/
void SystemIWDGInit(void)
{
// 1. IWDG上电后默认是运行状态时钟源32K LSI默认复位周期约20秒
LHL_IWDG_Stop();
// 2. 写入WDG必须先解锁注意WDG一旦Reload就自动启用写保护
LHL_IWDG_Unlock();
// 3. 设定LSI 32分频约1KHz默认为256分频
LHL_IWDG_SetPrescaler(IWDG_PRESCALER_32, LHL_NRM_TIMEOUT);
// 4. IWDG是12bit寄存器最大值4095默认重装载值0x9C0
LHL_IWDG_SetReload(4000, LHL_NRM_TIMEOUT);
// 5. 自动装载并开始运行大约4000*1KHz=4S复位
LHL_IWDG_Start();
}
/*
//void LHL_IWDG_Reload(void);//写入0xAAAA重装载IWDG
//LHL_StatusTypeDef LHL_IWDG_Stop(void); //暂停运行IWDG
//LHL_StatusTypeDef LHL_IWDG_Resume(void);//继续运行IWDG
//LHL_StatusTypeDef LHL_IWDG_Start(void);//写入0xAAAA重装载并启动IWDG
*/
/**------------------------------------------------------------------------
* @brief 停止 IWDG暂停计数
* @note 调用此函数可暂时关闭看门狗,例如在低功耗模式下。
* 若需要完全关闭,也可直接调用。
* @param 无
* @example Stop_WDT();
**/
void Stop_WDT(void)
{
LHL_IWDG_Stop();
}
/**------------------------------------------------------------------------
* @brief 喂狗(清除看门狗计数器)
* @note 应在 IWDG 复位超时前周期性调用,防止系统复位。
* 建议在主循环或固定时间中断中调用。
* @param 无
* @example Clear_WDT();
**/
void Clear_WDT(void)
{
//LHL_IWDG_Reload();
}