STM32F1 RCC与时钟树 深度详解
一、时钟核心基础
1.1 时钟的本质:数字电路的心跳
数字电路的所有状态翻转都由时钟边沿触发,没有时钟,所有寄存器、触发器都保持状态不变,电路"冻结"。
- CPU的指令流水线:取指→译码→执行,每一步都在时钟上升沿推进
- 外设寄存器的读写:只有时钟驱动下,寄存器才能响应总线的读写请求
- 串口、SPI等通信外设:波特率、通信时序都基于外设时钟分频得到
核心结论:
时钟是所有数字电路的动力源,时钟不开启,外设就是一块死电路,寄存器完全不可访问。 这就是"操作外设必先开时钟"的硬件根源。
1.2 四大硬件时钟源 全参数对比
STM32F1集成4个独立硬件时钟源,分高速/低速、内部/外部,覆盖不同精度、功耗、成本场景。
时钟源 全称 位置 典型频率 精度 温漂 核心用途 上电默认 HSI 内部高速RC振荡器 芯片内部 8MHz ±1%(常温) 大,随温度变化明显 上电默认时钟、低成本系统、PLL备用输入 ✅ 默认开启 HSE 外部高速晶振/振荡器 芯片外部 4~16MHz(常用8MHz) 极高,±20ppm以内 极小 高精度主系统时钟、PLL输入、通信外设 ❌ 默认关闭 LSI 内部低速RC振荡器 芯片内部 30~60kHz(典型40kHz) 很差,±30%以上 极大 独立看门狗时钟、低功耗唤醒、低成本RTC ❌ 默认关闭 LSE 外部低速晶振 芯片外部 32.768kHz 极高 极小 RTC实时时钟、低功耗计时、秒级基准 ❌ 默认关闭 关键细节补充
- 为什么LSE是32.768kHz? 32768 = 2^15,经过15次二分频后正好得到1Hz的秒基准信号,是实时时钟的标准频率,计时精准。
- HSE的两种类型
- 无源晶振(Crystal):需要芯片内部振荡器配合,成本低,最常用
- 有源晶振(Oscillator):自带振荡电路,直接输出方波,精度高、成本高,用于工业级产品
- HSI的局限 内部RC振荡器受温度、电压影响大,温度变化时频率漂移明显,不适合做串口、CAN等高精度通信的主时钟。
1.3 倍频与分频:时钟频率的变换
1.3.1 为什么需要倍频(PLL)
- 高频晶振成本高、起振难、电磁干扰大
- 低频晶振+倍频电路,成本低、稳定性好,还可以灵活配置主频
- STM32F1最高主频72MHz,就是通过PLL倍频得到的
1.3.2 PLL锁相环的硬件原理
PLL(Phase Locked Loop,锁相环)是一个硬件反馈控制系统,把低频输入时钟倍频到高频输出。 内部四个核心模块:
- 鉴相器(PD):比较输入时钟和反馈时钟的相位差
- 环路滤波器(LPF):滤波得到平滑的控制电压
- 压控振荡器(VCO):根据控制电压改变输出频率
- 反馈分频器:把输出时钟分频后送回鉴相器
锁相过程:
输出频率 = 输入频率 × 倍频系数
反馈分频器把输出分频到和输入同频,鉴相器比较相位,不断调整VCO,直到相位差恒定,此时频率锁定,输出稳定的高频时钟。
特点:
锁定后输出频率精准跟随输入频率,精度和输入时钟源一致;
锁定需要时间,配置后要等待PLLRDY就绪位。
1.3.3 分频:分级适配不同总线
高频时钟成本高、功耗大,不是所有外设都需要最高速。
通过分级分频,给不同速度的外设提供匹配的时钟,平衡性能与功耗。
STM32的分频层级:
- AHB预分频:系统时钟分频得到AHB总线时钟
- APB1/APB2预分频:AHB时钟分频得到两条外设总线时钟
- 外设内部分频:每个外设自己还有分频器,比如ADC、定时器、串口波特率分频
1.4 时钟门控:低功耗的核心
每一个外设的时钟输入前都有一个独立的开关(时钟门控),由RCC寄存器控制。
- 时钟开启:时钟信号通到外设,外设正常工作,可读写寄存器
- 时钟关闭:时钟被截断,外设电路停止翻转,功耗接近0,寄存器不可访问
设计意义
单片机绝大多数外设不是全程工作,不用时关掉时钟,可以大幅降低芯片整体功耗。
代价:
操作外设前必须先打开对应时钟,否则配置无效。这是STM32新手最高频的坑。
二、时钟树完整结构 逐段拆解
STM32F1的时钟树是一个从左到右的单向树状结构:时钟源 → PLL倍频 → 系统时钟选择 → AHB总线分频 → APB1/APB2外设分频 → 各个外设。
2.1 第一部分:时钟源与PLL倍频(左半段)
┌─────────┐ │ HSI 8MHz ├───────────────────┐ └─────────┘ │ ├──────────┐ ┌─────────┐ │ │ │ HSE 8MHz ├───────────┐ │ ▼ └─────────┘ │ │ ┌───────────┐ ▼ │ │ PLL锁相环 │ ┌───────────┐ │ └─────┬─────┘ │ /2 分频器 │ │ │ └─────┬─────┘ │ │ │ │ │ └───────┘ │ ▲ │ │ PLLSRC选择器 │ └─────────────────┘ │ ▼ ┌───────────┐ │ SYSCLK选择器 ├──► 系统时钟SYSCLK └───────────┘ ▲ │ HSE、HSI直连可选逐节点详解
- PLL输入源选择(PLLSRC)
- 可选:HSI二分频(4MHz)、HSE不分频
- 寄存器位:RCC_CFGR的PLLSRC位
- 注意:PLL配置必须在关闭PLL的状态下修改,锁定后不能改参数
- PLL倍频系数(PLLMUL)
- 可选:2~16倍
- 限制:PLL输出最高不超过72MHz
- 常用组合:8MHz HSE × 9倍 = 72MHz(标准主频)
- 系统时钟源选择(SW)
- 三个可选:HSI、HSE、PLLCLK
- 上电默认:HSI
- 切换流程:先开启目标时钟→等待就绪→切换时钟源→等待切换完成
- 状态位:SWS位,用来读取当前实际使用的时钟源
2.2 第二部分:总线分频与外设时钟(右半段)
SYSCLK 72MHz │ ▼ ┌───────────┐ │ AHB预分频器│ 可选1/2/4/8/16/64/128/256/512 └─────┬─────┘ │ HCLK 72MHz(默认不分频) │ ┌─────────┴──────────┐ │ │ ▼ ▼ AHB外设 ┌───────────┐ DMA、CRC等 │ APB预分频器│ └─────┬─────┘ │ ┌──────────────┴──────────────┐ │ │ ▼ ▼ ┌─────────┐ ┌─────────┐ │ APB2桥 │ │ APB1桥 │ │ 1分频 │ │ 2分频 │ └────┬────┘ └────┬────┘ │ PCLK2 72MHz │ PCLK1 36MHz │ │ APB2高速外设 APB1低速外设 GPIOA~GPIOG USART2/3 USART1 SPI2 SPI1 I2C1/2 ADC1/2 TIM2~TIM7 AFIO、EXTI 看门狗、BKP关键细节补充
AHB预分频器(HPRE)
- 分频系数:1、2、4、8、16、64、128、256、512
- 默认值:1分频,HCLK = SYSCLK
- 挂载:内核、SRAM、Flash、DMA、RCC等核心高速模块都运行在HCLK下
APB2高速外设总线(PCLK2)
- 预分频系数(PPRE2):1、2、4、8、16
- 默认1分频,PCLK2 = HCLK = 72MHz
- 所有GPIO端口全部挂载在APB2上,所以GPIO的最高工作时钟是72MHz
APB1低速外设总线(PCLK1)
- 预分频系数(PPRE1):1、2、4、8、16
- 最大分频限制:最高2分频,PCLK1最大36MHz
- 挂载低速外设,降低功耗和设计难度
定时器时钟的特殊倍频(高频考点) APB总线上的定时器外设,有独立的时钟倍频器:
- 如果APB预分频系数 = 1:定时器时钟 = PCLKx
- 如果APB预分频系数 > 1:定时器时钟 = PCLKx × 2
所以标准配置下:
- APB2的TIM1:PCLK2=72MHz,1分频 → 定时器时钟72MHz
- APB1的TIM2~7:PCLK1=36MHz,2分频 → 定时器时钟72MHz
结论:STM32F1所有通用定时器的时钟都是72MHz,和APB1/APB2无关。这是面试高频坑点。
ADC时钟的特殊分频 ADC对时钟上限有要求,F1的ADC最大工作时钟14MHz。
- ADC时钟来自PCLK2分频,可选2/4/6/8分频
- 72MHz PCLK2 ÷ 6分频 = 12MHz,是常用配置
- 超过14MHz会导致ADC采样精度下降
三、时钟树与总线、外设的深度打通
3.1.1 总线的理解
总线是芯片内部CPU、存储器、外设之间传输地址、数据、控制信号的公共硬件通路,不是单纯的几根导线,是一套完整的硬件协议与路由体系。
STM32F1内部分为三类总线:AHB、APB1、APB2。
- AHB(高级高性能总线):主高速主干总线,内核、Flash、SRAM、DMA挂载在此,带宽高,负责高速数据交互。AHB通过总线桥向下扩展出APB1、APB2两条外设总线。
- APB2(高级外设总线2):高速外设总线,挂载GPIO、ADC、SPI1、USART1等高速外设。
- APB1(高级外设总线1):低速外设总线,挂载I2C、SPI2、普通串口、通用定时器等低速外设。
关键要点:
- 每一条总线都绑定专属时钟域:AHB对应HCLK,APB2对应PCLK2,APB1对应PCLK1;总线的数据采样、信号同步完全依赖对应总线时钟。
- 总线桥作用:完成AHB与APB之间的协议转换 + 时钟域隔离,实现高速主干和低速外设互通。
- 外设挂载位置固定:硬件设计时就把外设固定挂在某一条总线上,软件无法修改。
3.1.2 外设寄存器
外设寄存器是外设内部的一组32位硬件存储单元,CPU通过统一编址,像访问内存一样读写寄存器,以此控制外设行为。
- **地址映射:**每一个外设的寄存器都分配固定的物理地址,例如GPIOA基地址
0x40010800,每个寄存器对应固定偏移。C语言通过结构体指针映射,直接操作硬件地址。- **
__IO:**volatile,告诉编译器不要优化,每次读写都必须访问真实硬件寄存器,不能缓存到CPU寄存器。- 寄存器和时钟强绑定
- 外设没有时钟:内部触发器停止翻转,寄存器无法正常读写,写操作无效,读出来是无效值。
- 外设开启时钟:寄存器才可以被总线正常读写。
- 误区:寄存器地址一直存在,地址译码可以找到外设,但没有时钟,硬件不会响应读写。
- 寄存器分类
- 控制寄存器:写配置,配置外设工作模式(CRL/CRH)
- 数据寄存器:存放输入输出数据(IDR、ODR)
- 状态寄存器:只读,反馈外设硬件状态
3.1.3 结合时钟树与总线设备
把时钟树、总线、外设三者做串联:时钟树提供各个总线的时钟频率,总线提供数据通路,外设挂载在总线上,同时接收这条总线的时钟信号。
完整信号流向
- 时钟树输出不同频率的时钟给到每一条总线;总线桥不仅转发数据,还把对应总线时钟送给挂载在这条总线上的全部外设。
- 每个外设的时钟门控开关(RCC的ENR寄存器),控制时钟信号能不能送到外设内部电路。
- **外设想要正常工作,两个条件必须同时满足:**① CPU可以通过总线访问该外设寄存器地址(地址通路) ② RCC开启该外设时钟,时钟信号送入外设内部(动力来源)
举例子GPIOA:
- 地址:
0x40010800,属于APB2地址段,AHB‑APB2桥把CPU指令转发到APB2总线。- 时钟:必须开启
RCC->APB2ENR对应位,PCLK2时钟送入GPIOA。- 两个条件全部满足,才可以读写GPIOA的CRL、BSRR寄存器。
典型故障现象
只写寄存器,忘记开时钟:
程序编译正常,地址正确,但是寄存器写入无效,外设完全没有反应。
3.1.4 CPU操作片上外设的过程
以
GPIOA->BSRR |= (1<<0);把PA0引脚置高,完整拆解CPU从执行指令到引脚电平变化的全过程。
- CPU内核执行指令 CPU在HCLK(AHB时钟)节拍下,从Flash取指、译码。识别出:要向物理地址
0x40010810写入数据0x00000001。把地址、数据、写控制信号发送到AHB总线矩阵。- AHB总线矩阵地址译码 硬件识别地址区间
0x4001 0000 ~ 0x4001 FFFF属于APB2外设,将访问请求转发给 AHB‑APB2总线桥。- AHB‑APB2桥做协议与时序转换 把AHB总线协议转换为APB总线协议,完成时钟域同步,访问请求交给APB2总线。
- APB2总线二次地址译码 + 时钟门控校验
- APB2总线上译码器根据偏移,选中GPIOA外设。
- 硬件检查RCC_APB2ENR中GPIOA时钟使能位:
- ✅时钟开启:PCLK2时钟接入GPIOA外设内部,允许总线读写寄存器
- ❌时钟关闭:外设电路冻结,直接忽略本次写请求,操作失效。
- 写入外设寄存器 数据写入BSRR寄存器硬件单元。BSRR是只写寄存器,硬件自动更新输出寄存器ODR。
- 外设硬件电路生效 ODR输出电平送到GPIO输出驱动电路,MOS管导通,PA0引脚输出高电平,外部LED点亮。
读外设流程反向:
引脚电平经过施密特触发器送入IDR寄存器,经过APB2桥、AHB总线,数据返回CPU内核。
核心总结
CPU操作外设,不是简单内存赋值,是一整套硬件流水线:内核 → AHB总线 → 总线桥 → APB总线 → 地址译码 → 时钟门控校验 → 寄存器更新 → 外设硬件动作。
配套面试题
为什么外设寄存器有地址,但不开时钟就无法操作?
地址只是访问通路,时钟是外设的工作节拍**。地址译码可以找到外设,但没有时钟,外设内部硬件电路停止工作,无法响应总线读写,写入无效。**
AHB‑APB桥的两个核心功能是什么?
①总线协议转换,AHB协议转为APB协议;
②时钟域隔离,对接AHB时钟域与APB时钟域。
CPU写GPIO寄存器,完整硬件过程是什么?
CPU发出读写请求→AHB总线矩阵译码→转发到AHB‑APB桥→协议转换进入APB总线→二次译码选中外设;校验外设时钟是否开启;时钟正常则写入寄存器;外设硬件根据寄存器完成引脚动作。
__IO(volatile)作用是什么?防止编译器优化,强制每次代码读写都访问真实硬件寄存器,而不是使用CPU内部寄存器缓存的值。
3.2 CPU操作外设的完整时钟流程
以配置GPIOA引脚为例,从代码执行到硬件生效的完整链路:
- 时钟使能:CPU执行
RCC->APB2ENR |= (1<<2),通过AHB总线写入RCC寄存器- 时钟门控打开:硬件打开GPIOA端口的时钟开关,PCLK2时钟进入GPIOA外设
- 时钟稳定:外设内部电路起振,进入工作状态
- 寄存器配置:CPU通过总线发送地址和数据,写入GPIO的CRL配置寄存器
- 硬件生效:GPIO内部电路根据寄存器值配置引脚模式,引脚进入对应工作状态
注意:
开启外设时钟后不需要额外延时,硬件几乎瞬间就绪;但切换主时钟、开启PLL时,必须等待就绪位。
3.3 低速外设时钟:RTC与独立看门狗
RTC时钟源
三个可选,独立于系统时钟:
- LSE外部低速晶振:精度最高,首选
- LSI内部低速RC:低成本,精度差
- HSE高速时钟128分频:不用额外晶振
独立看门狗时钟
只能用LSI内部低速时钟,设计目的:即使主时钟失效,看门狗仍然能工作,保证系统可靠性。
四、RCC寄存器
4.1 RCC核心概念
两大职责
- 🕒时钟管理:管理HSI/HSE/LSI/LSE、PLL锁相环、系统时钟SYSCLK、AHB/APB1/APB2分频、各个外设时钟门控开关。
- 🔁复位管理:系统复位、电源复位、各个片上外设单独硬件复位。
为什么必须要有RCC?
- 数字电路全部靠时钟边沿驱动,没有时钟,外设寄存器、触发器全部冻结,无法工作。
- 功耗控制:芯片几十个外设,大部分时间不需要工作。不用的外设把时钟关掉,动态功耗几乎降为0。
- 灵活配置主频:可以选择不同时钟源,配置PLL倍频,切换系统主频。
- 故障处理:支持外设单独复位,外设卡死可以软件复位,不需要整机重启。
RCC自身特殊性 RCC挂载在AHB总线上,RCC自身时钟永久开启,不受时钟门控控制,如果RCC时钟关闭,整个芯片时钟管理直接瘫痪。
时钟树和RCC的关系 时钟树是逻辑流向图;RCC寄存器就是用来搭建这颗时钟树的硬件配置接口。修改RCC寄存器,就改变时钟树通路、分频、开关。
4.2 开关电路:时钟门控(外设时钟开关)
重点:不是电源开关!是时钟信号的开关电路,这是RCC最核心硬件。
1.时钟门控硬件原理图文字版
PCLKx(来自APB总线的时钟信号) │ ▼ ┌────────────┐ │ 与门 AND门 │◄──── RCC_ENR寄存器对应使能位(0/1) └─────┬──────┘ │ ▼ 输出外设内部时钟 → 送给外设内部所有触发器、寄存器 外设内部模块硬件逻辑:
- RCC_ENR对应位置
1:与门打开,总线时钟送入外设,外设触发器可以随时钟边沿翻转,寄存器可读写。- RCC_ENR对应位置
0:与门直接把时钟信号截断,没有时钟脉冲送到外设。 ⚠️外设供电依然存在!寄存器保存原有数值,但是触发器不会翻转,总线读写外设寄存器无效。
2.时钟门控 vs 断电复位,三者区分(面试高频)
方式 供电 时钟 寄存器状态 恢复速度 时钟门控关闭(ENR置0) ✅供电正常 ❌切断时钟 保留原有配置 极快,直接置1即可打开 外设复位(RSTR寄存器置1) ✅供电正常 ✅时钟正常 寄存器全部恢复默认值 先开时钟,再复位,再释放复位 断电 ❌切断电源 ❌无时钟 寄存器全部丢失 慢,需要上电启动 工程编码规范: 开启外设标准流程:开启外设时钟 →(可选执行外设复位,再清除复位)→ 配置外设寄存器。
3.常见踩坑
- 只写外设寄存器,忘记打开时钟门控:地址访问没问题,但是硬件没有时钟,写入全部无效。
- 先复位外设,再开时钟:复位操作本身也需要外设时钟,时钟没开,复位完全无效。
4.3 RCC关键寄存器配置(STM32F1)
左侧:存储单元 A(D 触发器模型,1bit 存储单元)
- 写端:要写入的数据(0/1)
- 使能端:对应时钟上升沿
- 工作逻辑:
- 时钟上升沿到来:内部开关闭合,写端的数据送入锁存模块,保存数值(图中保存 1)。
- 上升沿结束,开关自动断开:切断写端,锁存模块独立保持输出电平,写端信号再怎么变,内部存储的值不会改变。
- 读端:把锁存住的电平向外输出。
关键点:
更新存储单元,必须依靠时钟边沿。没有时钟边沿,开关不会闭合,新数据写不进去,只能维持旧数值。 STM32 外设寄存器,就是大量这种 1bit 存储单元并排组成。
右侧:与门(时钟门控开关电路)
output = input & Enable
- input:来自总线的时钟脉冲信号
- Enable:RCC 寄存器的外设时钟使能位(0/1)
- output:送给存储单元(触发器)的实际时钟
两种工作状态
- Enable = 1(开启时钟,RCC->APBxENR 对应位置 1)
output = input & 1 = input时钟脉冲完整输出,存储单元可以收到时钟上升沿,可以正常写、更新寄存器。- Enable = 0(关闭时钟门控)
output = input & 0 = 0输出永远低电平,没有时钟边沿输出到存储单元。存储单元内部锁存的旧数据依然保留,但是没有时钟边沿,内部开关永远不会闭合,CPU 无法写入新数据。
两张图结合完整串讲(面试必背)
- CPU 通过总线,准备好要写入寄存器的数据,送到存储单元的写端。
- 如果 RCC 时钟门控的与门 Enable=0:输出没有时钟脉冲。存储单元的开关不会闭合,新数据无法锁存,寄存器维持旧值。就算地址译码正确,写操作也是无效的。
- 如果 RCC 时钟门控Enable=1:时钟脉冲正常送到存储单元。时钟上升沿到来,内部开关闭合,写端的数据存入存储单元,寄存器完成更新。
核心结论
- 存储单元(触发器)靠时钟边沿完成数据写入锁存。
- RCC 时钟门控的与门,本质就是控制时钟脉冲能不能送到触发器。
- 关闭时钟门控:存储单元保存原有数据,但是无法写入新数据,供电没有断开。
4.5 高频面试题
RCC是什么,有哪两大功能?
RCC是复位与时钟控制器。负责时钟源、PLL、总线分频、外设时钟门控开关;同时管理系统和外设硬件复位。
时钟门控电路原理,是断电吗?
不是断电,是与门电路截断输入外设的时钟脉冲。
外设供电保持,寄存器数值保留;
没有时钟,内部触发器无法翻转,寄存器读写无效。
开启外设的标准步骤,为什么复位之前要先开时钟?
①开启外设时钟门控;
②可选执行外设复位,再清除复位;
③配置外设寄存器。 复位逻辑也是外设内部电路实现,外设没有时钟门控打开,内部电路不工作,复位指令无效。
ENR寄存器和RSTR寄存器区别?
ENR:控制时钟门控开关,提供工作节拍;
RSTR:控制外设复位,把外设寄存器恢复出厂默认。复位操作需要时钟开启才能生效。
打开HSE之后为什么要等待HSERDY位?直接配置会发生什么?
外部晶振起振需要时间,RDY硬件置1代表振荡稳定。不等待直接配置,时钟不稳定,会造成程序跑飞死机。
为什么RCC寄存器永远可以访问?
RCC挂载AHB总线,自身时钟不受时钟门控控制,始终开启。
4.6 标准系统时钟配置流程(HSE+PLL=72MHz)
标准固件库/HAL库的SystemInit函数,本质就是按这个流程配置时钟:
- 复位RCC配置:恢复默认状态,开启HSI
- 开启HSE:置位RCC_CR的HSEON位
- 等待HSE就绪:循环检测HSERDY位,直到硬件置1
- 配置总线分频:设置AHB不分频,APB2不分频,APB1 2分频
- 配置PLL:选择HSE为PLL源,设置9倍频
- 开启PLL:置位PLLON位
- 等待PLL锁定:循环检测PLLRDY位
- 切换系统时钟:设置SW位选择PLL作为系统时钟
- 等待切换完成:检测SWS位,确认当前时钟是PLL
- 配置完成:系统运行在72MHz主频
🚩 深度面试题汇总
STM32F1的APB1和APB2最高频率分别是多少?为什么APB1更低?
APB2最高72MHz,和AHB同频;APB1最高36MHz,是AHB的2分频。 低速外设不需要高时钟,降频可以降低功耗、减少电磁干扰,也降低硬件设计难度。
APB1上的定时器时钟是36MHz吗?为什么?
不是,是72MHz。APB预分频系数大于1时,定时器时钟会2倍频。APB1是2分频,所以定时器时钟=36MHz×2=72MHz。
操作外设为什么必须先开启时钟?不开启会怎么样?
每个外设都有独立的时钟门控,默认关闭以降低功耗。时钟关闭时外设电路不工作,寄存器无法读写,配置不生效,外设无任何响应。
PLL锁相环的作用是什么?为什么不用高频晶振直接做主时钟?
PLL把低频时钟倍频到高频,得到系统主频。
高频晶振成本高、起振难、电磁干扰大;
低频晶振+PLL成本低、稳定性好,还可以灵活配置主频。
ADC的最大时钟是多少?怎么来的?
STM32F1的ADC最大工作时钟14MHz,超过会影响精度。
ADC时钟来自PCLK2分频,常用72MHz÷6分频=12MHz。
系统时钟切换为什么要等待就绪位?直接切不行吗?
时钟源启动、PLL锁定都需要时间,未稳定时切换会导致系统时钟不稳定,甚至程序跑飞。必须等待硬件置起就绪位,确认时钟稳定后再切换。
STM32有几个时钟源?各自的用途是什么?
四个。HSI内部高速8MHz,上电默认、低成本;
HSE外部高速,高精度主时钟;
LSI内部低速40kHz,看门狗、低功耗;
LSE外部低速32.768kHz,RTC实时时钟。
为什么独立看门狗要用LSI时钟?
设计上保证主时钟失效时,看门狗仍然能正常工作,实现真正的独立监控,提高系统可靠性。










