正点原子Mini Linux—EPIT定时器与GPT定时器简单介绍
EPIT定时器与GPT定时器简单介绍
cortex-A7拥有2个EPIT定时器和2个GPT定时器。
一、EPIT定时器
1、EPIT定时器简介
①、EPIT是一个32位的向下计数器。
②、EPIT的时钟源总共有3个可以选择,分别是ipg_clk、ipg_clk_32k和ipg_clk_highfreq。
③、有一个12位的分频器,可以对定时器时钟源进行1~4096分频。
④、拥有比较寄存器EPIT_CMPR,当计数寄存器里面的值与比较寄存器中的相等时,就会触发中断。
⑤、EPIT有两种工作模式:set-and-forget和free-running模式(通过控制寄存器EPIT_CR的bit3 RLD设置)。
set-and-forget模式:该模式下EPIT计数寄存器的值从加载寄存器EPIT_LR中获取初值,不能直接向计数寄存器写入数据。当计数器计数到0时,从加载寄存器中重新加载数据。
free-running模式:此模式下计数寄存器不会从加载寄存器中获取数据,计数值会一直在0xFFFFFFFF和0之间。
2、EPIT定时器寄存器
①、控制寄存器EPIT_CR
主要用来使能EPIT定时器、设置EPIT初始值、使能EPIT比较中断、选择EPIT模式、时钟源、分频值。
②、状态寄存器EPIT_SR
EPIT输出比较中断标志位。
③、加载寄存器EPIT_LR
用来设置加载值。
④、比较寄存器EPIT_CMPR
用来设置比较值。
⑤、计数寄存器EPIT_CNR
表示当前的计数值。
二、GPT定时器
1、GPT定时器简介
①、GPT定时器时32位向上寄存器。
②、GPT定时器有两路输入捕获和三路输出比较。
③、GPT定时器有一个12位分频器。
④、GPT时钟源可以选择
⑤、GPT定时器有两种工作模式:Restart和Free-Run模式(通过控制寄存器GPT_CR的bit9 FRR设置)。
Restart模式:此模式下,当计数值和比较寄存器中的值相等的时候,计数值清零,重新开始向上计数(只有比较通道1才有此模式,比较通道2,3没有)。
Free-Run模式:此模式下,当比较事件发生后并不会复位寄存器,而是继续计数,直到计到0xFFFFFFFF,然后重新回到0x00000000。
2、GPT定时器寄存器
①、控制寄存器GPT_CR
该寄存器可以用来使能GPT定时器、选择时钟源、工作模式、设置输入捕获条件,输出比较后输出引脚的电平。
②、分频寄存器GPT_PR
分频寄存器,由于只用了ipg_clk作为时钟源,设置该寄存器bit[11:0]进行分配。
③、状态寄存器GPT_SR
GPT定时器中断标志位,中断发生后相应位置1,需手动写1清除标志,从低到高依次为输出比较中断1-3,输入捕获中断1-2,溢出中断。
④、中断使能寄存器GPT_IR
使能GPT定时器的中断,相应位与GPT_SR寄存器对应。
⑤、输出比较寄存器GPT_OCR1~3
输出比较寄存器的值。
⑥、输入捕获寄存器GPT_ICR1~2
只读寄存器,保存最近一次输入捕获通道的值。
⑦、计数寄存器GPT_CNT
表示当前的计数值。
如果需要深入了解EPIT和GPT定时器可以分别参考《IMX6ULL参考手册》24,30章的内容。