ARM学习笔记(六)——时钟、PLL、EPIT与GPT定时器
一、今天的主要学习内容时钟和时钟源PLL 锁相环Prescaler 分频器PFD 分数分频器i.MX6ULL 时钟树AHB、IPG、PERCLK 时钟51 单片机定时器EPIT 增强型周期中断定时器GPT 通用定时器EPIT 定时中断实验GPT 自由运行模式精准延二、什么是定时定时器本质上是一个计数器。它通过对一个频率已知的时钟信号进行计数实现定时 延时 周期性事件 事件计数 输入捕获 输出比较基本原理时钟信号 ↓ 分频 ↓ 定时器计数 ↓ 达到指定条件 ↓ 产生事件/中断例如输入时钟频率为1MHz那么1个时钟周期 1μs如果计数1000次那么1000 × 1μs 1ms因此定时器的核心就是“利用已知频率的时钟进行计数”。三、时钟 ClockClock即时钟。在数字系统中时钟是一个稳定、周期性变化的信号为处理器和各种外设提供统一的时间基准。可以把时钟理解成数字电路工作的“节拍”。例如_ _ _ _ _ \_/ \_/ \_/ \_/ \_每一次周期变化都可以作为数字电路进行一次操作或计数的时间基准。四、时钟源定时器要进行准确计时首先需要稳定的时钟源。常见的时钟源是晶体振荡器也就是利用石英晶体的压电效应产生稳定的振荡信号。基本过程石英晶体 ↓ 施加电信号 ↓ 晶体产生稳定振荡 ↓ 形成稳定时钟晶体振荡器具有较好的稳定性因此可以作为系统的基础时钟源。五、PLL锁相环PLLPhase Locked Loop锁相环。PLL 主要用于对输入时钟进行倍频从而得到更高频率的系统时钟。例如24MHz ↓ PLL ↓ 528MHz或者24MHz ↓ PLL ↓ 1056MHzPLL 可以理解为输入低频时钟 ↓ PLL ↓ 输出高频时钟六、Prescaler分频器Prescaler预分频器。作用是对输入时钟进行分频。例如66MHz ÷ 2 ↓ 33MHz或者66MHz ÷ 4 ↓ 16.5MHz因此PLL → 提高频率 Prescaler → 降低频率七、PFD分数分频器PFDPhase Fractional Divider分数分频器。它可以对 PLL 输出进行进一步的分频从而产生不同频率的时钟。例如528 PLL ↓ PFD ↓ 产生不同的外设时钟因此在 i.MX6ULL 中PLL ↓ PFD ↓ 各种外设时钟需要注意PFD 是Phase Fractional Divider即分数分频器。八、PLL、Prescaler、PFD的区别三者作用可以简单记忆模块主要作用晶体振荡器产生稳定基础时钟PLL倍频提高时钟频率Prescaler分频降低时钟频率PFD对 PLL 输出进行分数分频可以记成晶振 ↓ 基础时钟 ↓ PLL ↓ 提高频率 ↓ PFD / Prescaler ↓ 得到需要的工作时钟九、i.MX6ULL时钟系统i.MX6ULL 内部有比较复杂的时钟树。可以简单理解为晶振 ↓ PLL ↓ PFD ↓ 分频器 ↓ CPU / AHB / IPG / PERCLK / 外设不同模块需要不同频率的时钟因此需要经过不同的选择和分频。十、ARM内核时钟ARM Cortex-A7 内核时钟主要由CCM_ANALOG_PLL_ARM相关模块产生。配置 ARM 内核 PLL 时需要注意切换过程。基本流程① 选择 OSC_CLK ↓ ② STEP_CLK 24MHz ↓ ③ 暂时使用 STEP_CLK ↓ ④ 配置 PLL1 ↓ ⑤ 设置 PLL 倍频参数 ↓ ⑥ 配置 PLL 后分频 ↓ ⑦ 切换回 PLL1_MAIN_CLK十一、为什么配置PLL时需要先设置二分频配置 ARM PLL 时需要特别注意在修改 PLL 倍频参数之前要先设置好 PLL 后面的二分频。原因是PLL频率突然发生变化 ↓ ARM内核时钟可能瞬间过高 ↓ 可能导致ARM内核工作异常因此配置过程中要先降低风险再逐步恢复到目标频率。基本思想正常工作频率 ↓ 切换到安全时钟 ↓ 修改PLL ↓ 设置分频 ↓ 切换回目标PLL十二、528 PLLi.MX6ULL 中还有CCM_ANALOG_PFD_528它与 528MHz PLL 时钟有关。可以理解为528 PLL ↓ PFD ↓ 不同频率的时钟 ↓ 提供给部分外设十三、480 PLL还有CCM_ANALOG_PFD_480主要与 480MHz PLL 时钟相关。同样可以通过 PFD 产生不同的时钟频率。因此可以简单记PLL1 → ARM内核相关时钟 528 PLL → 528MHz时钟源及其PFD 480 PLL → 480MHz时钟源及其PFD十四、AHB_CLK_ROOTAHBAdvanced High-performance BusAHB 是系统总线的一部分。今天重点涉及AHB_CLK_ROOT 132MHz其时钟配置涉及CBCMR[PRE_PERIPH_CLK_SEL] CBCDR[PERIPH_CLK_SEL] CBCDR[AHB_PODF]可以理解为PLL/PFD ↓ PERIPH时钟选择 ↓ AHB分频 ↓ AHB_CLK_ROOT最终得到AHB_CLK_ROOT 132MHz十五、IPG_CLK_ROOTIPGInternal Peripheral BusIPG 时钟主要用于内部外设。今天涉及IPG_CLK_ROOT 66MHz主要通过CBCDR[IPG_PODF]进行分频。关系可以理解为AHB_CLK_ROOT ↓ IPG分频 ↓ IPG_CLK_ROOT ↓ 66MHz因此AHB 132MHz IPG 66MHz二者通常存在AHB 2 × IPG的关系。十六、PERCLK_CLK_ROOTPERCLKPeripheral Clock即外设时钟。今天涉及PERCLK_CLK_ROOT 66MHz主要由CSCMR1[PERCLK_CLK_SEL] CSCMR1[PERCLK_PODF]控制。可以理解为时钟源 ↓ PERCLK_CLK_SEL ↓ PERCLK_PODF ↓ PERCLK_CLK_ROOT十七、i.MX6ULL主要时钟关系今天可以重点记住ARM核心 ↓ ARM PLL 528 PLL ↓ PFD ↓ 部分外设 480 PLL ↓ PFD ↓ 部分外设 系统总线 AHB_CLK_ROOT ↓ 132MHz ↓ IPG_CLK_ROOT ↓ 66MHz以及PERCLK_CLK_ROOT ↓ 66MHz十八、51单片机定时器51单片机中常见的定时器/计数器包括Timer0 Timer1部分型号还具有Timer2定时器本质上都是通过计数实现定时。十九、51单片机定时器的特点51单片机定时器常见工作方式包括8位自动重装 16位定时/计数8位自动重装计数器溢出后自动重新装载初值因此适合产生周期性的定时事件。16位定时器16位方式可以使用THx TLx组成16位计数器。溢出以后如果需要重新计时通常需要在中断服务程序中重新装载计数初值。二十、51单片机与i.MX6ULL定时器的区别虽然都是定时器但是两者结构不同。对比51单片机i.MX6ULL定时器Timer0/Timer1/Timer2EPIT/GPT等系统复杂度较低较高时钟系统相对简单PLL/PFD/分频器组成复杂时钟树定时方式计数溢出多种计数和比较方式输入捕获功能较少GPT支持输出比较功能较少GPT支持应用简单定时精确定时、捕获、比较等二十一、EPIT定时器EPITEnhanced Periodic Interrupt Timer中文增强型周期中断定时器。EPIT 主要用于周期性定时 周期性中断 延时基本工作过程时钟 ↓ EPIT ↓ 计数 ↓ 计数到指定值 ↓ 产生中断 ↓ 执行中断服务函数二十二、EPIT的特点EPIT 非常适合产生周期性的中断。例如每1秒产生一次中断然后在中断服务函数中LED翻转最终效果1秒 ↓ LED状态翻转 再过1秒 ↓ LED状态翻转 再过1秒 ↓ LED状态翻转因此 LED 会周期性闪烁。二十三、EPIT 1秒中断实验实验目标使用 EPIT 实现 1 秒周期中断并在中断服务函数中反转 LED。基本流程配置EPIT时钟 ↓ 设置EPIT分频 ↓ 设置计数初值 ↓ 打开EPIT中断 ↓ 打开GIC对应中断 ↓ 启动EPIT ↓ 等待计数结束 ↓ 产生IRQ ↓ 进入中断服务函数 ↓ LED翻转 ↓ 重新开始下一次计时二十四、EPIT定时计算定时器计算最重要的是定时时间 计数次数 × 单个计数周期而单个计数周期 1 / 定时器输入频率例如输入频率 1MHz那么1MHz 1,000,000Hz即1个计数周期 1μs如果需要1秒那么需要1,000,000次计数所以1秒 1,000,000 × 1μs二十五、频率单位和存储单位不要混淆今天特别容易混淆两个概念频率1MHz 1000 × 1000Hz 1,000,000Hz这里的1000 × 1000表示1,000,000存储容量存储容量中1MiB 1024 × 1024Byte 1,048,576Byte因此MHz → 十进制单位 MiB → 二进制容量单位在实际编程计算时要注意单位。二十六、EPIT定时器计算的一般方法假设定时器输入频率 F 预分频系数 N 目标时间 T则定时器实际计数频率为Ftimer F / N单次计数时间Tcount 1 / Ftimer需要的计数次数Count T / Tcount也可以直接写成Count T × Ftimer因此定时时间 计数次数 / 计数频率这是定时器计算最重要的公式。二十七、GPT定时器GPTGeneral Purpose Timer中文通用定时器。GPT 的功能比简单的周期定时更加丰富可以实现定时 计数 输入捕获 输出比较 精准延时因此 GPT 是一种功能比较完善的通用定时器。二十八、GPT自由运行模式GPT 可以工作在Free Running Mode自由运行模式。在自由运行模式下计数器启动以后不断进行计数。例如0 ↓ 1 ↓ 2 ↓ 3 ↓ 4 ↓ ... ↓ 65535 ↓ 重新计数计数器一直运行。因此可以利用当前计数值计算时间差。二十九、GPT精准延时利用 GPT 自由运行模式可以实现比较精准的延时。基本思想读取开始时间 ↓ 保存当前GPT计数值 ↓ 执行需要延时的操作 ↓ 不断读取GPT当前计数值 ↓ 计算计数差值 ↓ 达到目标时间 ↓ 延时结束例如start GPT当前计数值等待GPT当前计数值 - start达到目标计数值后延时结束三十、为什么GPT适合精准延时普通软件延时while() { ... }延时时间容易受到CPU频率 编译器优化 代码执行时间 中断等因素影响。而 GPT 是硬件计数器时钟 ↓ GPT ↓ 硬件自动计数因此时间基准更加稳定。三十一、GPT输入捕获GPT还支持Input Capture输入捕获。输入捕获可以用来测量外部信号的时间。例如测量PWM周期 脉冲宽度 频率基本过程外部信号 ↓ GPT输入捕获 ↓ 记录当前计数值 ↓ 下一次边沿 ↓ 再次记录计数值 ↓ 计算两个计数值的差 ↓ 得到时间例如第一次捕获1000 第二次捕获5000 计数差 5000 - 1000 4000再根据 GPT 的计数频率就可以计算出实际时间。三十二、GPT输出比较GPT还可以实现Output Compare输出比较。基本过程GPT计数器 ↓ 不断计数 ↓ 当前计数值 比较值 ↓ 产生事件因此可以用于产生定时事件 输出控制 周期信号三十三、EPIT和GPT的区别两者都可以定时但是应用重点不同。项目EPITGPT全称Enhanced Periodic Interrupt TimerGeneral Purpose Timer主要用途周期定时、中断通用定时周期中断支持支持自由运行功能重点不是此模式支持输入捕获不作为主要功能支持输出比较不作为主要功能支持精准延时可以很适合典型应用周期性LED闪烁精准延时、捕获、比较可以简单记忆EPIT → 周期中断 GPT → 通用定时 ├── 定时 ├── 延时 ├── 输入捕获 └── 输出比较三十四、定时器与中断的关系定时器本身负责计数达到条件后产生中断然后由 CPU响应IRQ ↓ 执行中断服务函数因此定时器 ↓ 计数 ↓ 达到计数条件 ↓ 产生中断 ↓ GIC ↓ CPU ↓ IRQ ↓ 中断服务函数这与上一节学习的 GPIO 中断可以联系起来。GPIO 中断GPIO → GIC → CPU定时器中断EPIT/GPT → GIC → CPU最终都需要经过中断控制器再由 CPU 响应。三十五、今天的知识结构今天可以把整个知识点串起来时钟系统 │ ┌────────────┼────────────┐ ↓ ↓ ↓ PLL PFD Prescaler │ │ │ └────────────┼────────────┘ ↓ 系统时钟 │ ┌────────────┼────────────┐ ↓ ↓ ↓ AHB 132M IPG 66M PERCLK 66M │ ↓ 定时器时钟 │ ┌──────┴──────┐ ↓ ↓ EPIT GPT │ │ ↓ ↓ 周期中断 定时/捕获/比较 │ │ └──────┬──────┘ ↓ GIC ↓ CPU ↓ IRQ ↓ 中断服务函数三十六、今天重点掌握的概念1. Clock为数字系统提供统一的时间基准。2. PLL锁相环主要用于倍频。3. Prescaler预分频器用于降低时钟频率。4. PFD分数分频器用于对 PLL 输出进行进一步分频。5. AHB系统高速总线相关时钟。AHB_CLK_ROOT 132MHz6. IPG内部外设总线时钟。IPG_CLK_ROOT 66MHz7. PERCLK外设时钟。PERCLK_CLK_ROOT 66MHz8. EPIT增强型周期中断定时器。重点周期定时、周期中断9. GPT通用定时器。重点定时、精准延时、输入捕获、输出比较三十七、计算关系最核心的几个公式频率 f 1 / T周期 T 1 / f定时器计数频率Ftimer Fclock / Prescaler单次计数时间Tcount 1 / Ftimer定时时间T Count / Ftimer需要的计数次数Count T × Ftimer例如Ftimer 1MHz那么1个计数 1μs需要1秒则Count 1s × 1MHz 1,000,000三十八、学习总结今天主要学习了i.MX6ULL 的时钟系统以及 EPIT、GPT 定时器。首先了解了时钟系统的基本组成。晶体振荡器提供稳定的基础时钟PLL 用于提高时钟频率Prescaler 用于分频PFD 用于对 PLL 输出进行分数分频。通过这些模块可以为 ARM 内核、系统总线和各种外设提供不同频率的工作时钟。i.MX6ULL 中需要重点掌握AHB_CLK_ROOT → 132MHz IPG_CLK_ROOT → 66MHz PERCLK_CLK_ROOT → 66MHz其中 AHB、IPG 和 PERCLK 是后续学习外设驱动和定时器时经常会遇到的时钟。然后学习了 EPIT 和 GPT。EPIT时钟 ↓ 分频 ↓ 计数 ↓ 达到计数值 ↓ 产生周期中断 ↓ 执行中断服务函数因此非常适合实现周期性中断例如每 1 秒进入一次中断在中断服务函数中反转 LED实现 LED 周期闪烁。GPT 则属于功能更加丰富的通用定时器可以工作在自由运行模式并支持输入捕获和输出比较。因此可以利用 GPT 的连续计数值实现精准延时也可以测量外部信号的周期和脉冲宽度。今天最重要的一句话定时器本质上就是对已知频率的时钟进行计数EPIT主要用于周期定时和周期中断GPT主要用于通用定时、精准延时、输入捕获和输出比较。

相关新闻

Prisma API Mutations 完全指南:对象、嵌套与批量变更操作详解

Prisma API Mutations 完全指南:对象、嵌套与批量变更操作详解

后端数据库GraphQL 【免费下载链接】prisma1 💾 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL & MongoDB) [deprecated] 项目地址: https://gitcode.com/gh_mirrors/pr/prisma1 点击查看 免费下载 本指南以 Prisma 1.x 系列…

2026/9/24 17:42:40 阅读更多 →
【无标题】厨电食品接触涂层怎么确认合规?一份送检与审证清单,附五家同赛道涂料企业资质对照

【无标题】厨电食品接触涂层怎么确认合规?一份送检与审证清单,附五家同赛道涂料企业资质对照

一、为什么厨电涂层合规需要单独做一次测评 厨电涂层的合规门槛和普通工业防护涂层不在一个量级。 普通工业涂层出问题,影响的是设备寿命和维护成本;厨电涂层出问题,直接触及食品安全。电饭煲内胆、炒锅、煎锅、空气炸锅内胆、烤盘——这些部…

2026/9/24 17:42:40 阅读更多 →
14-02-对比-CSharp-dotNET-vs-Java-JVM数据结构对比

14-02-对比-CSharp-dotNET-vs-Java-JVM数据结构对比

C#/.NET 与 Java/JVM 数据结构对比:从契约、布局到运行时比较基线:以 .NET 8 BCL/CoreCLR 与 Java 21 标准集合/HotSpot 为主要语义参照;不同 JVM、GC、AOT 与第三方集合库不在统一结论中 比较原则:语言语法、标准库公开契约、固定…

2026/9/24 17:41:39 阅读更多 →

最新新闻

JSP+MySQL个人日记本源码运行全攻略:从环境搭建到避坑指南

JSP+MySQL个人日记本源码运行全攻略:从环境搭建到避坑指南

简介:基于jspmysql的JSP个人日记本源码,是一份面向Java Web初学者与课程设计场景的完整Web应用项目。资源以JSP作为视图层、Servlet处理控制逻辑,结合MySQL存储用户、日记与分类数据,覆盖用户登录、会话保持、日记增删改查、分类管…

2026/9/24 18:29:14 阅读更多 →
2026年AirPods全系选购指南:从AirPods 4到Pro与Max,哪款最适合你

2026年AirPods全系选购指南:从AirPods 4到Pro与Max,哪款最适合你

AirPods这个品类,现在真的有点“乱花渐欲迷人眼”了。从最初只有一款标准版,到如今AirPods 4、AirPods Pro、AirPods Max三条线并行,Plus版一般、Lite版传闻满天飞,哪怕是数码圈老手,真要下手买前不花点时间做功课&…

2026/9/24 18:29:14 阅读更多 →
结构可靠性分析:验算点法与直接抽样组合实战

结构可靠性分析:验算点法与直接抽样组合实战

简介:面向结构可靠性与安全度评估的实用算法压缩包,适合结构工程专业学生、科研人员及从事可靠性分析的工程师。资源聚焦验算点法和直接抽样法,同时涉及蒙特卡洛模拟思路,用于计算结构失效概率、评估极端荷载下的安全裕度&#xf…

2026/9/24 18:29:14 阅读更多 →
前后端分离部署实战:systemd托管Java进程+Nginx反向代理

前后端分离部署实战:systemd托管Java进程+Nginx反向代理

1. 部署方案设计与总体思路1.1 为什么是“systemd Nginx”这套组合前后端分离项目的部署,说简单也简单,说麻烦也麻烦。简单在于流程是固定的——后端打成 jar 包跑起来,前端构建出静态文件扔给 Web 服务器。麻烦在于每一个环节都有坑&#x…

2026/9/24 18:29:14 阅读更多 →
腾讯云EdgeOne免费CDN实战:接入配置与成本优化指南

腾讯云EdgeOne免费CDN实战:接入配置与成本优化指南

上个月帮一个朋友的博客站点排查访问慢的问题。他的服务器带宽只有5M,文章里全是高清截图和录屏素材,高峰期十几个人同时打开就卡得不行。我顺手看了眼他用的还是老式按量计费CDN,月底账单里光是流量费就占了一半。我说你这个站,流…

2026/9/24 18:29:14 阅读更多 →
Linux与Windows系统运维:参数查询与配置命令对照实战

Linux与Windows系统运维:参数查询与配置命令对照实战

很多时候,我们干的活儿并不是什么高深莫测的架构设计,反而是那些每天都在重复的“查一下参数、改一个配置”。尤其是当你的手头同时管着 Windows 服务器和 Linux 服务器时,这种“精神分裂”的感觉会特别明显:明明在 Windows 上用图…

2026/9/24 18:28:13 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →