GPT的全称是General Purpose Timer,它是一个32位的向上的定时器(也就是从0x00000000开始向上累加计数),GPT也可以和一个设定的值进行比较,当定时器的技术达到这个预设的值的时候,就会产生一个比较事件,产生一个中断。GPT有一个12位的分频器(我们在前面学习EPIT的时候,EPIT也是有一个12位的分频值),我们可以通过修改分频器的数值来修改GPT的频率,并且GPT的时钟源有多路可以选择。
首先我们来看下GPT的结构框架,如图 1:
从上图我们可以看到:
标识1是GPT定时器的时钟输入,GPT的时钟输入源有5路可以选择,我们下面会介绍。
标识2是12位的分频器,对输入的的时钟源进行分频,功能跟前面介绍的EPIT定时器的分频器基本一样。
标识3是经过分频后的时钟进入GPT定时器内部的32位计数器
标识4是输出比较寄存器,GPT一共支持三路,所以对应的有三路比较寄存器。
标识5是输出比较中断,对应的有三路,当计数器里面的值和比较近存起里面的值相等时就会产生比较中断。
下面我们来看下GPT的时钟源结构图,如图 2所示: