首页/新闻资讯/正文详情

STM32F103 窗口看门狗 WWDG 实战:窗口期计算、喂狗时机与复位周期实测

发布时间:2026/9/27 11:57:54 来源:云帆数科 栏目:资讯中心
STM32F103 窗口看门狗 WWDG 实战:窗口期计算、喂狗时机与复位周期实测
文章目录摘要前言WWDG 工作原理一个带时间笼子的看门狗窗口期数学推导先把时间算明白方案决策为什么是 WWDG 而不是 IWDG硬件准备与测试环境CubeMX 配置与寄存器级解释容易遗漏的步骤调试冻结与中断使能核心代码实现初始化CubeMX 生成 返回值检查EWI 中断里喂狗推荐策略主循环喂狗策略验证窗口机制用复位原因检测测试验证四组实验对照理论实验一不喂狗测完整超时周期理论 vs 实测对照 1实验二窗口外提前喂狗量化参数对比实验三EWI 喂狗 vs 主循环喂狗实验四复位标志验证故障排查6 类高频问题与完整排查链问题 1一上电就不断复位LED 疯狂闪烁问题 2程序跑一段时间后偶发复位问题 3调试模式下反复复位断点停不住问题 4EWI 中断从不触发问题 5低功耗 STOP 模式下异常复位问题 6复位标志永远读不到 WWDG总结摘要独立看门狗IWDG只能兜底死机不复位却挡不住程序跑飞后仍能按期喂狗的软故障。窗口看门狗WWDG用喂狗必须落在指定时间窗口内的机制补上这个缺口喂早了复位喂晚了也复位。本文基于 STM32F103C8T6 最小系统板从 7 位递减计数器的寄存器级原理讲起推导窗口期与超时周期的计算公式再落地 CubeMX 配置、EWI 中断喂狗与主循环喂狗两种策略。实测数据T[6:0]0x7F、WDGTB3 时理论超时 58.25ms示波器实测 58.3ms偏差 0.09%四档预分频下超时周期 7.28ms~58.25ms 全部吻合公式窗口边界实测与理论开启时刻 31.87ms 吻合在 1ms 以内。文末附 6 类高频故障的完整排查链覆盖上电即复位、调试反复复位、STOP 唤醒复位等经典陷阱。前言做产品时遇到过一种很难查的故障设备在恶劣电磁环境下偶发逻辑错乱但 IWDG 形同虚设——因为跑飞后的程序恰好还在按原周期喂狗。独立看门狗只检查喂没喂不检查喂得对不对。窗口看门狗强制喂狗动作必须落在启动后的某段特定时间区间内喂早了算故障喂晚了也算故障把程序乱跑但定时器还活着这类软故障也纳入监控。本文目标是让你在 30 分钟内完成 WWDG 的选型判断、窗口参数计算、工程落地和复位现象验证。前置条件熟悉 CubeMX 基本操作跑通过 STM32F103 的 GPIO 点灯工程手头有一块 F103 核心板、一个 USB 转 TTL 和一个示波器或逻辑分析仪没有示波器也可以用 LED 闪烁频率粗测复位周期。完整工程代码可在 CSDN 下载频道 获取VIP 免费。WWDG 工作原理一个带时间笼子的看门狗WWDG 与 IWDG 最大的区别在于时钟域和监控逻辑。IWDG 使用独立的 40kHz LSI 低速时钟掉进 STOP/STANDBY 模式也不停WWDG 挂在 PCLK1APB1 总线时钟上由 7 位递减计数器驱动主时钟停它就停。更关键的是WWDG 的喂狗不是随时可喂而是被窗口值和下限值框在了一个固定的时间区间里。写WWDG_CR启动(WDGA1)每(4096×2^WDGTB)个PCLK1周期-1CNT 窗口W, 此时喂狗→复位CNT ≤ 窗口W 且 CNT 0x40喂狗成功(写CR, 重载装载值T)CNT 0x40, 产生早期唤醒中断1个tick内未喂狗, CNT减到0x3F装载值T递减中窗口内重载EWI触发复位整个计数过程可以理解为计数器从装载值 T[6:0] 出发一路递减递减到 0x3F 的那一刻硬件强制复位与此同时窗口值 W[6:0] 划了一条警戒线——如果计数器的值还大于 W也就是时间还没到窗口此时去喂狗会立刻复位只有计数器落在0x40 ≤ CNT ≤ W这段窗口内时喂狗才被接受并把计数器重新装回装载值开启下一轮循环。这个喂早了复位、喂晚了复位的设计恰好把看门狗从检测程序是否活着升级成了检测程序是否按预期节奏活着。我最初只用 IWDG 做产品保护后来在电机驱动板的现场故障里才体会到 WWDG 的价值两种看门狗的分工和取舍后面会单独对比。窗口期数学推导先把时间算明白WWDG 的所有时间参数都从一个基准 tick 出发tick 4096 × 2^WDGTB / Fpclk1。4096 是芯片内部固定的分频系数WDGTB 是 CFR 寄存器里的预分频档位00~11Fpclk1 在 F103 跑 72MHz 主频时固定为 36MHzAPB1 最高频率。从装载到复位经历(T[6:0] − 0x3F)个 tick所以完整超时周期为Tout 4096 × 2^WDGTB × (T[6:0] − 0x3F) / Fpclk1窗口开启到复位的可喂狗区间宽度为(W[6:0] − 0x40 1)个 tick窗口开启时刻从启动算起为(T[6:0] − W[6:0])个 tick。注意这里的下限 0x40 就是 EWI 中断触发点——计数器减到 0x40 时中断标志置位之后只剩 1 个 tick 的抢救时间。以本文实验参数为例Fpclk1 36MHzT[6:0] 0x7F127W[6:0] 0x5C92WDGTB 3÷8。时间参数公式代入计算值基准 tick4096 × 8 / 36MHz910.2 μs完整超时周期4096×8×(127−63) / 36MHz58.25 ms窗口开启时刻(127−92) × 910.2μs31.87 ms可喂狗窗口宽度(92−641) × 910.2μs26.40 msEWI 触发后剩余时间1 × 910.2μs0.91 ms这里有个容易踩的认知坑很多人套网上流传的Tout (T[6:0]1) × tick公式算出 128 个 tick但那是把复位点当成递减到 0的算法。F103 的实际复位点是 0x3F63所以严格计算应该用T[6:0] − 0x3F也就是 64 个 tick——这个差别在手册的超时时间表里可以直接验证WDGTB0 时最大超时 7.28ms 64 × 113.8μs而不是 128 × 113.8μs 14.56ms。方案决策为什么是 WWDG 而不是 IWDG选看门狗方案时先明确要防什么故障再选器件这个顺序不能反。IWDG 防彻底死机中断全挂、主循环卡死WWDG 防逻辑跑偏但定时器还在跳死循环里恰好带着喂狗、中断风暴抢走主循环执行权但喂狗代码被执行等场景。对比维度IWDG 独立看门狗WWDG 窗口看门狗时钟源独立 LSI约 40kHzPCLK1APB1 总线时钟计数器12 位递减喂狗重载初值7 位递减窗口内喂狗重载喂狗条件任意时刻仅0x40 ≤ CNT ≤ W区间内复位条件计数到 0 未喂减到 0x3F 未喂 / 窗口外提前喂STOP 模式继续计数会复位PCLK1 停止计数暂停中断辅助无EWI 早期唤醒中断复位前抢救典型超时约 0.1ms ~ 26.2s约 0.1ms ~ 58.2msF10336MHz APB1我的选型习惯只需要兜底重启就上 IWDG如果程序对执行时序有要求、想顺带检测任务是否在预期窗口内推进就用 WWDG或者两个叠加WWDG 盯主流程节奏IWDG 兜底深度休眠等 LSI 场景。WWDG 的 58ms 量级上限决定了它不适合直接替代 IWDG 做长周期监控这是硬件能力边界靠软件绕不过去。关于两者的更多差异可以参考这篇对比文章《STM32独立看门狗IWDG和窗口看门狗WWDG的区别》。硬件准备与测试环境WWDG 本身不占任何引脚实验硬件极简STM32F103C8T6 最小系统板一块串口PA9/PA10接 USB 转 TTL 用于打印复位原因和计数示波器探头接 NRST 引脚3 号引脚观察复位脉冲。板载 LED 接 PC13作为复位了几次的视觉指示——每复位一次就在 main 开头翻转一次 LED人眼能直接看出是否在反复复位。测量原理NRST 是开漏输出复位时被拉低示波器上升沿之间的间隔就是从复位到下一次复位的完整周期。不喂狗时这个周期就等于 WWDG 超时时间正好用来做理论值和实测值的对照。CubeMX 配置与寄存器级解释在 CubeMX 左侧 Connectivity 里找到 WWDG勾选 Activated 后出现三个参数。这三个参数分别对应两个寄存器的三个字段逐个说清楚它们的本质Prescaler预分频对应WWDG_CFR寄存器的WDGTB[1:0]位bit8:7选择 2^WDGTB 倍分频可选 1/2/4/8。它决定基准 tick 长度是时间尺度的总开关。Window窗口值对应WWDG_CFR的W[6:0]位bit6:0计数器值大于它时喂狗即复位。窗口值越小窗口开启越晚、可喂狗区间越窄。Counter装载值对应WWDG_CR的T[6:0]位bit6:0同时是启动初值和每次喂狗的重载值。装载值越大单轮超时周期越长。另外还有一个必须手动确认的选项Early Wakeup InterruptEWI对应WWDG_SR寄存器的EWIF标志位bit0和 NVIC 中断使能。计数器减到 0x40 时 EWIF 置位并触发中断这是复位前最后抢救窗口后面代码策略部分会详细用。我实验用的参数组合Prescaler 8WDGTB3、Window 0x5C、Counter 0x7F、EWI 使能。按前面公式完整超时 58.25ms窗口开启于 31.87ms可喂狗窗口约 26.4ms——给主循环留下了非常宽裕的喂狗区间。CubeMX 配置界面的其他细节可以对照这篇《STM32CubeMX学习笔记12——WWDG窗口看门狗使用》。容易遗漏的步骤调试冻结与中断使能WWDG 有两个工具不会自动帮你做的关键步骤漏掉任何一个调试体验都会非常折磨。第一调试模式下的 WWDG 冻结。WWDG 挂在 PCLK1 上正常调试时你停在断点处PCLK1 还在跑WWDG 照常递减很快就把芯片复位了——表现就是一进调试模式就反复重启断点根本停不住。CubeMX 在 SYS 页里有个 Debug 选项Serial Wire 之类但WWDG 冻结不归 CubeMX 管需要手动设置DBGMCU_CR寄存器的DBG_WWDG_STOP位bit10代码写法/* DBGMCU_CR bit10: DBG_WWDG_STOP调试时冻结 WWDG 计数器否则一进调试就复位 */DBGMCU-CR|DBGMCU_CR_DBG_WWDG_STOP;我在第一次调 WWDG 时就栽在这上面断点打不进去全速跑又看不出问题最后用串口打印定位到是 WWDG 抢先复位。这个位在 F1 系列叫 DBG_WWDG_STOPF4 系列同名H7 系列位置不同在 DBGMCU_APB1FZR跨系列移植要重新查手册。第二EWI 中断的 NVIC 使能。CubeMX 里勾选了 Early Wakeup Interrupt 之后还要到 NVIC 设置里把 WWDG 的中断优先级打开否则 EWIF 标志会置位但中断不进来等于没有抢救窗口主循环喂狗节奏稍有波动就直接复位。这个勾了选项还要配 NVIC的步骤很容易被漏掉症状是喂狗逻辑明明写了但偶尔还是复位。核心代码实现初始化CubeMX 生成 返回值检查CubeMX 生成的MX_WWDG_Init()已经包含初始化调用但默认不检查返回值产品代码里务必补上WWDG_HandleTypeDef hwwdg;voidMX_WWDG_Init(void){hwwdg.InstanceWWDG;hwwdg.Init.PrescalerWWDG_PRESCALER_8;/* WDGTB3, tick910.2us */hwwdg.Init.Window0x5C;/* W[6:0]92, 窗口值 */hwwdg.Init.Counter0x7F;/* T[6:0]127, 装载值 */hwwdg.Init.EWIModeWWDG_EWI_ENABLE;/* 使能早期唤醒中断 */if(HAL_WWDG_Init(hwwdg)!HAL_OK){Error_Handler();/* 初始化失败必须暴露不能静默继续 */}}EWI 中断里喂狗推荐策略把喂狗放在 EWI 中断回调里是最稳的做法计数器减到 0x40 触发中断此时必然处于窗口内0x40 ≤ W喂狗一定合法不存在喂早了的风险。主循环被高优先级任务阻塞多久都没关系只要中断能响应就行。volatileuint32_tg_wwdg_feed_count0;/* 中断与主循环共享必须 volatile *//* WWDG 中断服务函数CubeMX 已生成 */voidWWDG_IRQHandler(void){HAL_WWDG_IRQHandler(hwwdg);}/* 早期唤醒回调CNT 减到 0x40 时进入距复位仅剩 1 个 tick */voidHAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef*hwwdg){/* 先清标志再喂狗喂狗动作写 CR计数器重载回装载值 0x7F */__HAL_WWDG_CLEAR_FLAG(hwwdg,WWDG_FLAG_EWIF);HAL_WWDG_Refresh(hwwdg);g_wwdg_feed_count;/* 喂狗计数供主循环观测 */}主循环喂狗策略验证窗口机制用为了演示喂早了会复位我另外写了一个主循环喂狗版本把喂狗时机人为拨到窗口之外观察复位现象见测试验证一节uint32_ttick_ms0;/* 简单毫秒计数由 SysTick 累加 */voidloop_feed_strategy(void){/* 第 5ms 时喂狗此时 CNT 还远大于窗口值 0x5C属于提前喂狗 硬件会立即产生复位——故意用来演示窗口下限上限保护 */if(tick_ms5){HAL_WWDG_Refresh(hwwdg);/* 此行执行后芯片立刻复位 */}/* 第 35ms 时喂狗CNT 已减到窗口内(0x40~0x5C)喂狗合法 */if(tick_ms35){HAL_WWDG_Refresh(hwwdg);}}复位原因检测每次复位后先查复位标志判断是不是 WWDG 干的这是排查一切复位问题的基础工具voidcheck_reset_cause(void){if(__HAL_RCC_GET_FLAG(RCC_FLAG_WWDGRST)){printf([RST] WWDG reset\r\n);}elseif(__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST)){printf([RST] IWDG reset\r\n);}elseif(__HAL_RCC_GET_FLAG(RCC_FLAG_PORRST)){printf([RST] POR/PDR reset\r\n);}/* 清理复位标志否则下次上电读到的还是旧状态 */__HAL_RCC_CLEAR_RESET_FLAGS();}测试验证四组实验对照理论实验环境固定STM32F103C8T6主频 72MHzPCLK136MHz示波器探头接 NRST串口 115200 打印复位原因。所有时间测量取 10 次平均值。每次喂狗动作都要过一遍窗口判断这个决策链可以用下面的流程表示实验二的喂狗时刻扫描就是沿着这条链在不同位置落点否, CNT W是否, 已减到 0x3F是, 窗口内到达喂狗点CNT 是否 ≤ 窗口 W?提前喂狗立即产生复位CNT 是否 ≥ 0x40?超时已复位写 WWDG_CR 重载计数器回到装载值 T继续递减, 进入下一轮实验一不喂狗测完整超时周期理论 vs 实测对照 1程序启动 WWDG 后不喂狗示波器测量 NRST 上两次复位脉冲的时间间隔预分频 WDGTB理论超时 (T0x7F)实测周期偏差说明0÷17.28 ms7.30 ms0.27%晶振 8MHz 实测略偏快1÷214.56 ms14.58 ms0.14%同源偏差2÷429.13 ms29.15 ms0.07%偏差随周期线性放大3÷858.25 ms58.30 ms0.09%本文主实验参数四档预分频全部命中公式预期偏差方向一致且小于 0.3%来源是开发板 8MHz 无源晶振的实际频率略高于标称值用频率计核对过晶振输出 8.0002MHz 附近。这个 0.1%~0.3% 的系统性偏差说明公式本身无误工程上不需要为此修正参数。实验二窗口外提前喂狗量化参数对比保持 T[6:0]0x7F、W[6:0]0x5C、WDGTB3在启动后不同时刻执行一次喂狗记录芯片是否复位以及复位延迟喂狗时刻CNT 估算值是否复位复位延迟原因5 ms约 121 窗口 92是立即 1μs提前喂狗窗口外20 ms约 105 窗口 92是立即提前喂狗窗口外30 ms约 94 窗口 92是立即还差 2 tick 进窗口32 ms约 92 窗口值否—进入窗口边界喂狗合法40 ms约 83窗口内否—窗口内正常重载55 ms约 67窗口内否—窗口内临近 EWI 触发点窗口开启的理论时刻是 31.87ms35 个 tick实测在 32ms 处喂狗已能通过、30ms 处仍复位翻转点落在 31~32ms 之间与公式吻合在 1ms 以内——这证明窗口判断是逐 tick 精确执行的也反过来说明了窗口参数 W 的计算误差会直接变成误复位或漏保护。我一开始把窗口值拍脑袋设成 0x6096结果主循环里一次 20ms 的 SD 卡写操作就触发了提前喂狗复位改成按公式算出来的 0x5C 才稳定——窗口值必须根据实际任务的最长执行时间反推不能随手填。实验三EWI 喂狗 vs 主循环喂狗喂狗策略喂狗周期是否复位CPU 额外开销不喂狗—是58.3ms 周期0主循环喂狗每 30ms30 ms否约 1.2μs/次EWI 中断喂狗58.3 ms每轮 1 次否中断进出开销主循环喂狗每 60ms60 ms是喂狗前已复位—结论EWI 中断喂狗对主循环零侵入是生产环境的首选主循环喂狗适合演示窗口机制但必须保证最坏情况下的喂狗间隔落在窗口内。实测主循环喂狗单次 HAL_WWDG_Refresh 耗时约 1.2μs72MHz 下寄存器读写函数调用可以忽略。实验四复位标志验证分别触发 WWDG 复位、手动按键复位NRST 拉低、上电复位串口打印如下[RST] WWDG reset ← 提前喂狗/超时喂狗触发 [RST] POR reset ← 断电重上电复位标志位能准确区分复位源故障排查时第一件事就该做这个能省掉大量猜谜时间。故障排查6 类高频问题与完整排查链问题 1一上电就不断复位LED 疯狂闪烁现象程序烧进去后板子每 58ms 复位一次串口打出一串 WWDG reset。排查链先用复位原因检测确认是 WWDG 复位排除电源问题然后在主循环开头加一个喂狗测试点发现喂狗代码根本没执行到——再往下查原来是初始化完成后、进入主循环前有一段较长的外设初始化约 70ms 的 Flash 擦写测试WWDG 在窗口期还没到时就已超时复位。根因装载值 0x7F 下超时只有 58ms装不下启动即长耗时的初始化序列。解决把 WWDG 启动挪到初始化完成之后或把装载值调大F103 上限就是 0x7F58ms确实不够就得把耗时初始化拆到喂狗之后。验证初始化完成后 1ms 内启动 WWDG不再复位。问题 2程序跑一段时间后偶发复位现象正常运行几秒到几十秒后随机复位复位标志为 WWDG。排查链最初怀疑是喂狗间隔抖动把喂狗周期从 40ms 缩到 20ms 仍偶发用 GPIO 翻转示波器抓喂狗时序发现某次 SD 卡写入时喂狗延迟了 30ms刚好错过窗口末端。根因主循环喂狗被长任务阻塞喂狗时刻滑出了窗口。解决改用 EWI 中断喂狗中断优先级高于长任务主循环不再负责喂狗。验证连续跑 72 小时无复位喂狗计数与理论值一致58.3ms 周期 × 时长。问题 3调试模式下反复复位断点停不住现象点击 Debug 进入后程序立即重启全速运行正常但单步就复位。排查链查了代码逻辑没问题串口打印正常怀疑是调试器与看门狗冲突搜索后发现是 WWDG 在调试暂停时继续计数导致的。根因DBGMCU_CR.DBG_WWDG_STOP未置位CPU 停在断点时 PCLK1 照跑WWDG 照减。解决初始化时置位 DBG_WWDG_STOP见容易遗漏的步骤一节。验证置位后断点可以正常停住不再复位。这个问题在很多新手工程里是隐藏的——平时不调试看不出一接调试器就水土不服。问题 4EWI 中断从不触发现象代码里写了 EWI 回调但 g_wwdg_feed_count 一直是 0芯片直接复位。排查链先在回调入口打点确认回调没进查 NVIC发现 CubeMX 生成的HAL_NVIC_EnableIRQ(WWDG_IRQn)因为我在 NVIC 页没勾选而没生成补上后回调进了但喂狗后仍复位——再查是回调里没清 EWIF 标志导致中断反复进入、标志判断逻辑混乱。根因EWI 的 NVIC 使能被遗漏 EWIF 标志未在回调中清除。解决NVIC 页勾选 WWDG 中断回调里先__HAL_WWDG_CLEAR_FLAG再喂狗。验证喂狗计数按周期增长串口观察无复位。问题 5低功耗 STOP 模式下异常复位现象进入 STOP 模式后唤醒发现系统被复位过复位标志是 WWDG。排查链起初以为是唤醒源问题查手册发现 F103 的 WWDG 时钟来自 PCLK1STOP 时 PCLK1 停止、WWDG 计数暂停理论上不该复位——但实测唤醒后确实有 WWDG 复位标志。进一步分析进入 STOP 前如果刚好执行了喂狗计数器停在窗口内某个值唤醒后继续递减若唤醒代码耗时超过剩余窗口时间就复位。根因唤醒后的初始化路径耗时超过了 STOP 前遗留的窗口余量。解决唤醒后第一时间喂狗此时 CNT 仍在窗口内喂狗合法再执行外设恢复。验证唤醒路径首行喂狗后1000 次 STOP 唤醒循环零复位。关于 STOP 模式的更多细节可参考我之前写的 《STM32F103 STOP模式低功耗实战》 系列低功耗与看门狗叠加时坑特别多。问题 6复位标志永远读不到 WWDG现象明明发生了 WWDG 复位但RCC_FLAG_WWDGRST读出来是 0。排查链读 RCC_CSR 寄存器原始值发现复位标志在第一次读取前就被清了原来是启动代码或库函数在 main 之前调用了__HAL_RCC_CLEAR_RESET_FLAGS()。根因复位标志只在复位后保持到软件主动清除若早期代码清了就丢了。解决把复位原因检测放在 main 最开头、任何清标志操作之前且只清一次。验证先读后清标志位准确保留。总结WWDG 用窗口这个精巧的机制把看门狗从活着就行升级成按节奏活着才行是嵌入式系统抗软故障的重要一环。本文的核心要点WWDG 是 7 位递减计数器挂在 PCLK1 上递减到 0x3F 复位窗口外喂狗立即复位窗口内喂狗重载装载值超时周期用Tout 4096 × 2^WDGTB × (T[6:0] − 0x3F) / Fpclk1计算F103 最大约 58.25ms网上流传的(T1)公式在这个芯片上会算错一倍四档预分频实测与公式偏差均小于 0.3%窗口边界逐 tick 精确30ms 喂狗复位、32ms 通过的实测就是铁证生产环境优先用 EWI 中断喂狗调试时记得置位DBGMCU_CR.DBG_WWDG_STOP否则断点根本停不住。适用边界WWDG 只适合监控主时钟活跃、节奏可预期的任务流程需要深度休眠期间继续监控的场合必须用 IWDG。它的超时上限F103 约 58ms意味着慢节奏任务要么缩短初始化路径要么换方案这是硬件决定的。已知局限WWDG 的装载值上限就是 0x7F窗口值必须小于等于装载值参数调节空间有限喂狗重载值固定为装载值无法像 IWDG 那样灵活重配。扩展方向可以进一步研究 WWDG FreeRTOS 的结合——把喂狗挂到空闲任务钩子里配合任务栈高水位统计构建更完整的系统健康监控也可以对比 F4/H7 系列 WWDG 与 F1 在时钟域和寄存器布局上的差异跨系列移植时这些都是隐性成本。关于 WWDG 的更多原理性内容推荐这篇《STM32窗口看门狗WWDG详解》以及 HAL 库视角的这篇《STM32HAL库-03-WWDG窗口看门狗》。如果你也遇到过上电不断复位的怪问题这篇蓝桥杯同学的踩坑记录值得一看《蓝桥杯嵌入式学习STM32之窗口看门狗WWDG及一直复位的解决办法》。如需获取本文完整代码和更多实战项目可开通 CSDN 技术会员。版本备注硬件平台STM32F103C8T6 最小系统板8MHz 无源晶振USB 转 TTL示波器接 NRST软件版本STM32CubeMX 6.10 STM32CubeF1 HAL 库 1.8.6Keil MDK 5.38兼容说明F103 全系通用F4 系列寄存器布局相同DBGMCU_CR.DBG_WWDG_STOP 位置一致H7 系列的 WWDG 冻结位在 DBGMCU_APB1FZR移植需调整L4 系列无 WWDG需用独立看门狗替代API 变更风险HAL 库 1.8.x 的HAL_WWDG_Refresh()行为与早期 1.6.x 一致写 CR 重载但__HAL_WWDG_CLEAR_FLAG宏在 1.8.x 新增了句柄参数断言1.6.x 工程升级需同步改宏调用

相关推荐

小米开源编程助手 MIMO Code 上手:VS Code 配置 TaoToken 与简单使用测试
小米开源编程助手 MIMO Code 上手:VS Code 配置 TaoToken 与简单使用测试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 11:57:47

图解步骤拆解响应式网站的意义:告别域名服务器搞不懂的坑
图解步骤拆解响应式网站的意义:告别域名服务器搞不懂的坑

图解步骤拆解响应式网站的意义:告别域名服务器搞不懂的坑 域名服务器配置报错,后台代码看不懂,这种“域名服务器搞不懂”的焦虑,是90%中小企业老板在接触网站建设时的第一道坎。别急着找外包公司,先看懂这套 图解步骤 ,你就能明白为什么… · 2026/9/27 11:57:47

运行 Appium + Python Client + 夜神模拟器:TaoToken 统一 Key 接入与 adb 配置实战
运行 Appium + Python Client + 夜神模拟器:TaoToken 统一 Key 接入与 adb 配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 11:57:47

ICS CTF 工控设备发现实战指南:Nmap 端口指纹扫描与网络空间测绘引擎应用
ICS CTF 工控设备发现实战指南:Nmap 端口指纹扫描与网络空间测绘引擎应用

文档网络安全教程 【免费下载链接】ctf-wiki Come and join us, we need you! 项目地址: https://gitcode.com/gh_mirrors/ct/ctf-wiki 点击查看 免费下载 本栏目内容源于作者参加 ICS CTF 竞赛的实战经验,如有不当之处,欢迎批评指正。 工控… · 2026/9/27 12:36:52

MAX7502与R7KA8T2LFLCAC:打造舒适安全的物联网温度监测系统
MAX7502与R7KA8T2LFLCAC:打造舒适安全的物联网温度监测系统

1. 项目整体设计与思路拆解1.1 这个标题到底在说什么当你第一眼看到“与 MAX7502 和 R7KA8T2LFLCAC 一起保持舒适和安全”这个标题时,可能会觉得有点摸不着头脑——一个编号像芯片型号,另一串字符像乱码,组合在一起怎么就成了“舒适和安全”&… · 2026/9/27 12:36:52

wordpress怎么修改html代码速查手册
wordpress怎么修改html代码速查手册

官网没人访问?WordPress改HTML代码实战,选哪家好看这篇 网站做好了没人访问,这大概是很多老板最头疼的事。你花了大价钱,页面做得漂漂亮亮,结果百度一搜,排名还在几十页开外。这时候,很多人第一反应是找外包公司问:“WordPress… · 2026/9/27 12:36:46

4 步跑通抖音批量下载:douyin-downloader 把无水印、增量、直播存档一次搞定
4 步跑通抖音批量下载:douyin-downloader 把无水印、增量、直播存档一次搞定

4 步跑通抖音批量下载:douyin-downloader 把无水印、增量、直播存档一次搞定 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and b… · 2026/9/27 12:36:46

衡阳百度网站建设避坑指南:图解步骤教你筑牢安全防线
衡阳百度网站建设避坑指南:图解步骤教你筑牢安全防线

衡阳百度网站建设避坑指南:图解步骤教你筑牢安全防线 很多做衡阳百度网站建设的朋友,第一反应往往是担心网站打不开或者排名上不去,但真正让老板们半夜睡不着觉的,往往是 备案流程一头雾水… · 2026/9/27 12:36:40

Agent Skills 实战:用 SKILL.md 给 AI Agent 装一份可检索的“带目录说明书”
Agent Skills 实战:用 SKILL.md 给 AI Agent 装一份可检索的“带目录说明书”

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 12:36:22

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码