第二章 高精度延时实验

一、GPT定时器简介

以前的延时函数就采用空指令执行来实现,延时肯定不准确!当我们修改了6ULL的主频以后,采用空指令的延时函数就不准了!因此我们需要高精度的延时函数,而且不随着主频的变化而改变。

STM32使用SYSTICK这个硬件定时器来实现高精度延时,因此我们可以在6U里面使用一个硬件定时器来实现高精度延时。

本讲我们使用6U的GPT定时器来实现高精度延时。

GPT定时器是32位向上计数器。

GPT定时器有捕获的功能。

GPT定时器支持比较输出或中断功能。

GPT定时器有一个12位的分频器。

GPT时钟源可以选择,这里我们使用ipg_clk=66M作为GPT的时钟源。

GPT定时器有两种工作模式:restart和free-run。

Restart模式下:定时器计数值和比较寄存器OCR的值相等的话定时器就会重新从0开始计时。注意!只有比较通道1才有此功能。

Free-run模式:所有三个输出比较通道都适用。从0开始一直加到0xffffffff,然后重新从0开始,周而复始。

GPT_CR寄存器,bit0为GPT使能位,为0的时候关闭GPT,为1的时候使能GPT。Bit1确定GPT定时器计数器的初始值,为0的时候表示GPT定时器计数值默认为上次关闭的时候遗留的值,为1的话计数值为0。Bit8~6为时钟源的选择,设置为1,表示GPT时钟源为ipg_clk=66MHz。bit9设置GPT定时器工作模式,为0的时候工作在restart模式,为1的时候工作在free-run模式。Bit15软件复位。

GPT_CR寄存器的bit110为分频值,可设置0-4095,表示14096分频。

GPT_SR寄存器,bit5表示溢出发生,bit4和bit3分别为输入通道2和1的捕获中断标志位。Bit20,也就是OF3OF1为比较中断。

GPT_IR寄存器,也就是中断使能寄存器

二、GPT定时器使用

三、高精度延时原理简介

四、实验程序编写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值