1、GPT定时器简介
(1)GPT定时器全称为General Purpose Timer,是一个32位向上定时器。GPT定时器也可以跟一个值进行比较,当计数值和这个值相等的话就发生比较事件,产生比较中断。
GPT定时器有一个12位的分频器,可以对GPT定时器的时钟源进行分频,GPT定时器特定如下:
①、一个可选时钟源的32位向上计数器。
②、两个输入捕获通道,可以设置触发方式。
③、三个输出比较通道,可以设置输出模式。
④、可以生成捕获中断、比较中断和溢出中断。
⑤、计数器可以运行在重新启动(restart)和自由运行(free-run)模式。
(2)GPT定时器有两种工作模式:
①、重新启动(restart)模式:当GPTx_CR(x=1,2)寄存器的FRR位清零的时候GPT工作在此模式。在此模式下,当计数值和比较寄存器中的值相等的话计数值就会清零,然后
从新从0X00000000开始向上计数,只有比较通道1才有此模式!向比较通道1的比较寄存器写入任何数据都会复位GPT计数器。对于其他两路比较通道(通道2和3),当发
生比较事件以后不会复位计数器。
②、自由运行(free-run)模式:当GPTx_CR(x=1,2)寄存器的FRR寄存器位置1时候GPT工作在此模式下,此模式适用于所有三个比较通道,当比较事件发生以后并不会复位计
数器,而是继续计数,知道计数值位0XFFFFFFFF,然后重新回滚到0X00000000。
(3)GPT定时器寄存器
①、GPTx_CR:配置寄存器
②、GPTx_PR:分频寄存器
③、GPTx_SR:状态寄存器
④、GPTx_CNT:计数寄存器
⑤、GPTx_OCR:输出比较寄存器
2、高精度延时的实现步骤:
(1)设置GPT1定时器
首先设置GPT1_CR寄存器的SWR(bit15)位来复位寄存器GPT1。复位完成以后设置寄存器GPT1_CR寄存器的CLKSRC(bit8:6)位,选择GPT1的时钟源位ipg_clk。设置定时器GPT1
的工作模式。
(2)设置GPT1的分频值
设置寄存器GPT1_PR寄存器的PRESCALAR(bit11:0)位,设置分频值。
(3)设置GPT1的比较值
如果要使用GPT1的输出比较中断,那么GPT1的输出比较寄存器GPT1_OCR1的值可以根据所需的中断时间来设置。不使用时可以将CPT1_OCR1设置为最大值,即0XFFFFFFFF。
(4)使能GPT1定时器
设置好GPT1定时器以后就可以使能了,设置GPT1_CR的EN(bit0)位为1来使能GPT1定时器。
(5)编写延时函数
GPT1定时器已经开始运行了,针对us和ms延时分别编写两个延时函数。
本文介绍了I.MX6UL的GPT定时器,包括其功能、模式、寄存器结构,并详细阐述了如何实现高精度的延时功能,涉及设置定时器、分频值、比较值以及使能定时器的步骤。
—— GPT定时器&spm=1001.2101.3001.5002&articleId=107471506&d=1&t=3&u=efb821c36d914411a384b3abd4b34d97)
3788

被折叠的 条评论
为什么被折叠?



