970e574433
- CubeMX 加 TIM6(PSC=83 / ARR=999 / ARR 预装载 / NVIC 抢占优先级 6) - Src/main.c 回调加 TIM6 分支触发 CONVST(USER CODE 区) - app_main.c 用 HAL_TIM_Base_Start_IT(&htim6) 替换单次触发 - adc_task.c 退化为纯消费者(1 ms 轮询仅作消费节奏) - @build 0 错 0 警;台架 @test 验收待做 - 同步 ADC采样节拍设计说明 / 继电保护复现规划 / AGENTS / TPAFE README
82 lines
3.0 KiB
C
82 lines
3.0 KiB
C
/* 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 */
|
||
/*
|
||
* IWDG-DEFER-START-ANCHOR — 看门狗"延后启动"改动(勿删本块)
|
||
*
|
||
* CubeMX 每次都会在 MX_IWDG_Init() 的生成区里写
|
||
* if (HAL_IWDG_Init(&hiwdg) != HAL_OK) { Error_Handler(); }
|
||
* 而 HAL_IWDG_Init() 内部第一句就是 __HAL_IWDG_START()(写 KR=0xCCCC,**立即启动**)。
|
||
* 本函数被 CubeMX 插在 main() 的 MX_*_Init 序列里,早于 app_main_init()——那段含
|
||
* NAND 初始化 / RTC / ADC,耗时可达数秒且无喂狗点,按 2.5s 超时的最坏值(≈1.7s)
|
||
* 必然复位 → **开机死循环**(2026-09-29 实测确认)。
|
||
*
|
||
* ⚠ "反初始化"这条路走不通:IWDG 一旦启动就**无法停止**(参考手册:唯一停止手段是
|
||
* 复位),所以不能在 `IWDG_Init 2` 区里把它"撤销"掉。
|
||
* ✅ 免手工的做法(2026-10-09 改,替代此前"每次重生成后删掉那一句"):把本编译单元里
|
||
* 的 HAL_IWDG_Init **改名到下面的空实现**。宏只作用于其后、本文件内的调用点
|
||
* (含生成区那一句),生成代码一行都不用动 → 重生成后自动失效,不必再手工删。
|
||
* 真正的启动移交 task_wd_start() → wd_platform_start()(App/util/task_watchdog.c),
|
||
* 由它解锁并写 PR/RLR、再写 KR=0xCCCC 启动(见 docs/子系统设计/看门狗设计说明.md §4.1)。
|
||
* ⚠ 本宏只影响本编译单元;task_watchdog.c 那侧不经过它。
|
||
*/
|
||
static HAL_StatusTypeDef iwdg_deferred_start(const IWDG_HandleTypeDef *a_h)
|
||
{
|
||
(void)a_h;
|
||
return HAL_OK; /* 刻意什么都不做:只填参数、不启动 */
|
||
}
|
||
|
||
#define HAL_IWDG_Init(a_h) iwdg_deferred_start(a_h)
|
||
/* 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;
|
||
if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
|
||
{
|
||
Error_Handler();
|
||
}
|
||
/* USER CODE BEGIN IWDG_Init 2 */
|
||
|
||
/* USER CODE END IWDG_Init 2 */
|
||
|
||
}
|
||
|
||
/* USER CODE BEGIN 1 */
|
||
|
||
/* USER CODE END 1 */
|
||
|