引入:I.MX6U除了EPIT定时器还有GPT定时器。
1.32位定时器
2.向上计数
3.12位分频值
4.三个输出比较通道,可设置为输出模式
5.两个输入捕获通道,可以设置触发方式
6.可以产生比较中断,捕获中断,和溢出中断。
7.计数器可以运行在restart和free-run模式
1.ipg_clk_24M
2.ipp_ind_clkin
3.ipg_clk
4.ipg_clk_32k
5.ipg_clk_highfreq
可通过GPT控制寄存器GPT_CR选择)
restart:
当计数器达到比较值,计数器复位并从0x00000000重新开始
重新启动功能仅与比较通道1相关联。
对通道1的比较寄存器的任何写访问都将复位GPT计数器。 这是这样做是为了避免当比较值从在进行计数时,从较高的值到较低的值。
free-run:
在free-run模式下,当所有三个通道发生比较事件时,计数器不重启; 相反,计数器会继续计数直到0xffffffff,然后将其翻转到
0x00000000)。
1.GPTx_CR:GPT控制寄存器
SWR(bit15):复位 GPT 定时器,向此位写 1 就可以复位 GPT 定时器,当 GPT 复位完成以后此为会自动清零
EN_24M(bit10) :0:失能24M时钟 1:使能24M时钟,如果时钟源不选择ip_clk_24M,此位可以不设置。
FRR(bit9) :运行模式选择,当此位为 0 的时候比较通道 1 工作在重新启动(restart)模式。当此位为 1 的时候所有的三个比较通道均工作在自由运行模式(free-run)。
CLKSRC(bit8:6):GPT 定时器时钟源选择位,为 0 的时候关闭时钟源;为 1 的时候选择ipg_clk 作为时钟源;为 2 的时候选择 ipg_clk_highfreq 为时钟源;为 3 的时候选择外部时钟为时钟源;为 4 的时候选择 ipg_clk_32k 为时钟源;为 5 的时候选择 ip_clk_24M 为时钟源。
ENMODE(bit1) :GPT 使能模式,此位为 0 的时候如果关闭 GPT 定时器,计数器寄存器保存定时器关闭时候的计数值。此位为 1 的时候如果关闭 GPT 定时器,计数器寄存器就会清零。
EN(bit) :GPT 使能位,为 1 的时候使能 GPT 定时器,为 0 的时候关闭 GPT 定时器。
2.GPTx_PR:GPT预分频器寄存器
PRESCALER24M(bit15:12):如果时钟源使用ip_clk_24M则此位为24M时钟的分频值。
PRESCALER(bit11:0),这就是 12 位分频值,可设置 0~4095,分别对应 1~4096 分频
GPTx_SR:GPT状态寄存器
ROV(bit5) :回滚标志位,当计数值从 0XFFFFFFFF 回滚到 0X00000000 的时候此位置 1
IF2~IF1(bit4:3) :输入捕获标志位,当输入捕获事件发生以后此位置 1,一共有两路输入捕获通道。如果使用输入捕获中断的话需要在中断处理函数中清除此位。
OF3~OF1(bit2:0):输出比较中断标志位,当输出比较事件发生以后此位置 1,一共有三路输出比较通道。如果使用输出比较中断的话需要在中断处理函数中清除此位。
GPTx_IR:GPT中断寄存器
ROVIE(bit5):溢出中断
IF2IE(bit4):通道二输入捕获中断使能 1:使能 0:失去能
IF1IE(bit3):通道一输入捕获中断使能 1:使能 0:失去能
IF3IE(bit2):通道3输出比较中断中断使能 1:使能 0:失去能
IF2IE(bit1):通道2输出比较中断中断使能 1:使能 0:失去能
IF1E(bit0):通道一输出比较中断中断使能 1:使能 0:失去能
GPTx_OCR1:GPT比较寄存器1
保存的值决定了何时比较事件将在输出比较通道1上产生。
处于重启模式(FRR = 0)时,通道1的比较寄存器将复位GPT计数器。
GPTx_OCR2:GPT比较寄存器2
GPTx_OCR3:GPT比较寄存器3
GPTx_ICR1:GPT输入捕捉寄存器1
是只读寄存器,用于保存输入捕获通道1上一次捕获事件期间计数器中的值。
GPTx_ICR2:GPT输入捕捉寄存器2
GPTx_CNT:GPT计数器寄存器
是主计数器的寄存器。 GPT_CNT是一个只读寄存器,可以读取而不会影响GPT的计数过程。