前言
51 单片机定时器是入门定时器的经典案例,而 i.MX6ULL Cortex-A7 平台提供 EPIT、GPT 两类硬件定时器。本篇对比两者工作原理,讲解 EPIT 和 GPT 的特性、实验用法,同时附带作业思考题答案,适合嵌入式裸机学习笔记。
一、51 单片机定时器工作原理
51 单片机定时器核心分为两种模式:
- 8 位自动重装模式:THx、TLx,溢出后硬件自动把 THx 的值加载到 TLx,无需在中断服务函数手动赋值,适合周期性定时。
- 16 位模式 :16 位计数,溢出触发中断;中断服务函数内必须手动重装初值,硬件不会自动填充 TH、TL。
本质都是对系统机器周期脉冲计数,计数溢出后触发定时器中断。
二、i.MX6ULL 定时器介绍
1. EPIT 增强型周期中断定时器 Enhanced Periodic Interrupt Timer
EPIT 专门用于周期性定时中断,适合固定周期任务。
- 特性:支持自动重装,计数到 0 触发中断。
- 实验案例:1s 定时中断,中断服务函数翻转 LED。
注意区分两个 "M":
- 频率:
1000*1000 = 1MHz(兆赫兹,10⁶)- 存储:
1024*1024 = 1MByte(兆字节,2²⁰)
2. GPT 通用定时器 General Purpose Timer
GPT 功能更丰富,支持输入捕获、输出比较。
- 自由运行模式:计数器从 0 一直递增到最大值,溢出回滚,不会自动停止。
- 实验:基于自由运行模式编写精准硬件延时函数,替代软件空循环延时。
三、作业思考题解答
1、什么是 PLL,Prescaler、PFD,各自作用?
- PLL(锁相环):倍频电路。输入低频基准时钟,输出稳定高频时钟,用来产生芯片内核、外设需要的高频时钟。
- Prescaler 预分频器:对输入时钟分频,降低时钟频率。
- PFD 相位分数分频器:可升频、可降频,从 PLL 输出衍生多路不同频率时钟,供给不同外设使用。
2、IMX6ULL 中有几个 PLL?几个 PFD?
i.MX6ULL 一共7 路 PLL : PLL1 (ARM PLL)、PLL2 (528M System PLL)、PLL3 (480M USB1 PLL)、PLL4 (Audio)、PLL5 (Video)、PLL6 (Ethernet)、PLL7 (USB2)。 PFD 在 PLL2(528PLL)、PLL3(480PLL)内部,各 4 路 PFD,总共 8 个 PFD。
3、简述 ARM PLL(PLL1)配置流程
- 先把 step_clk 选择为外部 24M 晶振 osc_clk;
- 将 ARM 内核时钟临时切换到低速 step_clk,防止修改高频 PLL 时内核崩溃;
- 配置 PLL1 倍频因子,优先配置 PLL 后端二分频;
- 等待 PLL 锁定稳定;
- 切回 pll1_main_clk,内核使用 PLL1 输出的高频时钟运行。
4、IMX6ULL EPIT 和 GPT 工作原理
- EPIT:增强周期中断定时器。用于周期性定时,配置计数初值,计数器递减到 0 产生中断,硬件自动重装初值,适合周期中断任务,如定时翻转 LED。
- GPT :通用定时器。支持自由运行 / 重启模式,具备输入捕获(测量脉冲宽度)、输出比较(PWM / 定时触发);自由运行模式下计数器持续递增,可以读取计数值实现精准硬件延时。
四、小结
- 51 定时器:8 位自动重装 /16 位手动重装,是定时器基础。
- EPIT 主打周期中断;GPT 是多功能通用定时器,主打捕获、比较、精准延时。
- i.MX6ULL 的所有定时器都依赖 CCM 时钟树,使用前必须配置 PLL、PFD 并打开外设时钟门。