/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file iwdg.c * @brief This file provides code for the configuration * of the IWDG instances. ****************************************************************************** * @attention * * Copyright (c) 2026 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "iwdg.h" /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ IWDG_HandleTypeDef hiwdg; /* IWDG init function */ void MX_IWDG_Init(void) { /* USER CODE BEGIN IWDG_Init 0 */ /* USER CODE END IWDG_Init 0 */ /* USER CODE BEGIN IWDG_Init 1 */ /* USER CODE END IWDG_Init 1 */ hiwdg.Instance = IWDG; hiwdg.Init.Prescaler = IWDG_PRESCALER_64; hiwdg.Init.Reload = 1249; /* IWDG-DEFER-START-ANCHOR — 本锚点与下方改动一体,重生成会一并消失, * 供 scripts/check_cubemx_survival.py 检出(勿删): * * ⚠ 本行为生成区改动(生成区里**唯一**被手工改的一句,2026-09-29 起): * 原为 `if (HAL_IWDG_Init(&hiwdg) != HAL_OK) { Error_Handler(); }`。 * 原因:HAL_IWDG_Init() 内部第一句即 __HAL_IWDG_START()(立即启动看门狗, * 之后不可停、只能复位)。而本函数被 CubeMX 插在 main() 的 MX_*_Init 序列里, * 早于 app_main_init()——那段含 NAND 初始化/RTC/ADC,耗时可达数秒且无喂狗点, * 按 2.5s 超时最坏值(≈1.7s)必然复位 → **开机死循环**(2026-09-29 实测确认)。 * 故只填参数不启动;启动移交 task_wd_start()(App/util/task_watchdog.c), * 由 defaultTask 在存储 bring-up 完成后调用——即"启动段不喂狗、主循环段才喂" * (见 docs/子系统设计/看门狗设计说明.md §4.5 决策 C)。 * * ⚠ 若 CubeMX 重生成覆盖此处,症状 = **开机即复位**(LED 不闪、日志停在早期)。 * 恢复方法:删掉 HAL_IWDG_Init 调用,改为本注释形态(含锚点)。 * 注:不可把下面两句赋值与这里的替换一起塞进 IWDG_Init 1 区——该区位于 * 两句赋值**之前**,HAL 调用在区外,仍会被覆盖。故此改动只能在生成区。 */ /* USER CODE BEGIN IWDG_Init 2 */ /* USER CODE END IWDG_Init 2 */ } /* USER CODE BEGIN 1 */ /* USER CODE END 1 */