I.MX6UL裸机开发(八)—— GPT定时器

本文介绍了I.MX6UL的GPT定时器,包括其功能、模式、寄存器结构,并详细阐述了如何实现高精度的延时功能,涉及设置定时器、分频值、比较值以及使能定时器的步骤。

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延时分别编写两个延时函数。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值