0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GD32 Timer定时器周期时间计算公式

聚沃科技 2024-01-22 09:53 次阅读

有小伙伴反馈GD32 Timer定时器的周期时间不知如何计算,今天就来安排。

我们分成两个系列来讲解——GD32F30x和GD32F4xx系列。

一、GD32F30x系列

要想计算Timer的周期时间,首先要知道Timer的时钟频率,看时钟频率当然就要看时钟树啦,在时钟树的右下方就标注了Timer的时钟频率。

wKgZomWtyjqAZrcDAAGgI89B6As339.png

我们把图放大,可以看到Timer1,2,3,4,5,6,11,12,13的时钟源来自于CK_APB1,Timer0,7,8,9,10来自于CK_APB2。而CK_APB1和CK_APB2最高的频率为60M和120M,那这两类Timer的时钟频率是不是就是60M和120M呢?

wKgaomWtyj6AdmcrAAGEu4UBU08064.png

答案是否定的。我们来看下图方框中的提示,方框1中写到,如果APB1的分频系数为1的话,这些Timer的频率就等于CK_APB1,如果APB1的分配系数不为1,则Timer的频率等于CK_APB1*2。方框2中的内容和方框1中相同,就不再赘述。

wKgZomWtykaACzK-AAGGYHSg_JU436.png

那么APB1和APB2的分频系数在哪里设置的呢,答案就是——在系统时钟配置中,也就是SystemInit函数中调用的system_clock_config函数。通常我们设置系统时钟和AHB时钟为120M,设置APB1分频系数为2,即APB1时钟为AHB时钟的二分之一60M;设置APB2分频系数为1,即APB2时钟等于AHB时钟120M。

wKgaomWtykuAWEkDAAC6QHPlqrk709.png

好了,知道以上知识点我们就可以算出Timer的时钟频率了。举个例子,我们设置AHB时钟为120M,APB1分频系数为2,我们来算下Timer1的频率。首先,算出CK_APB1=AHB时钟/2 = 60M,其次,由于APB1分频系数不等于1,所以CK_Timer1=CK_APB1*2 = 60M*2 = 120M。

wKgZomWtylGAb3SXAAD0eh2NpSM523.png

算出Timer的时钟频率后,我们看下Timer最基础的配置代码:

wKgaomWtylSAXNN_AACcsIVLCMY489.png

有两个和周期时间相关的参数

其一为prescaler,即Timer的分频系数,该分频系数将Timer频率进行分频后给到计数器时钟,计算公式为:计数器时钟频率 = CK_TIMER/(prescaler+1),故图中计数器时钟频率为120M/12000 = 10KHz,即每100us,计时器进行一次计数。

其二为period,即周期值,也叫作重载值,在边沿计数模式下,计数器计重载值个数所用的时间,称为一个周期时间,计算公式为:周期时间 = (period+1)/计数器时钟频率;而在中央计数模式下,计数器计数重载值*2个数所用的时间,称为一个周期时间,计算公式为:周期时间 = (period+1)*2/计数器时钟频率。故图中周期时间为160/10K = 16ms。

上面讲的是计算过程和原理,下面给出周期时间计算总公式:

1、边沿计数模式下的计算公式:

(prescaler+1)*(period+1)/CK_TIMER,其中CK_TIMER根据APB1和APB2的分频系数决定

2、中央计数模式下的计数公式:

(prescaler+1)*(period+1)*2/CK_TIMER,其中CK_TIMER根据APB1和APB2的分频系数决定

二、GD32F4xx系列

实际上GD32F4xx系列的周期时间计算公式和GD32F30x的相同,不同的点在于CK_TIMER的计算公式,照例看下GD32F4xx的时钟树:

wKgZomWtyluABi9AAAE8yf10Ubs367.png

可以看到CK_TIMER可以是APB时钟乘以1、乘以2或乘以4,那具体是乘以几呢?这个是根据时钟配置寄存器 1(RCU_CFG1) 中的第24位TIMERSEL来决定的:

wKgZomWtymCAVdbkAAAqn1d5Sd4318.png

wKgaomWtymWAM_qBAAFkKtufpBc876.png

GD32F4xx用户手册中对这一位描述的非常清晰,这里就不再赘述了。

好了,通过本期讲解,相信小伙伴们就可以轻松计算出Timer的周期时间啦。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620875
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288521
  • 定时器
    +关注

    关注

    23

    文章

    3148

    浏览量

    112048
  • Timer
    +关注

    关注

    1

    文章

    58

    浏览量

    12679
  • GD32
    +关注

    关注

    7

    文章

    333

    浏览量

    23748
收藏 人收藏

    评论

    相关推荐

    GD32Timer定时器原理的详细讲解

    GD32 Timr定时器看起来比较复杂啊。一看GD32E10x 的SPEC:一个高级定时器,三个通用定时器,还有一个基本
    的头像 发表于 04-22 17:02 1.5w次阅读
    <b class='flag-5'>GD32</b>对<b class='flag-5'>Timer</b><b class='flag-5'>定时器</b>原理的详细讲解

    GD32开发实战指南(基础篇) 第7章 定时器

    系统滴答定时器一般用来提供“心跳”作用,而GD32定时器最基本功能也是定时,可以设置不同时间长度的定时
    的头像 发表于 05-11 09:00 9228次阅读
    <b class='flag-5'>GD32</b>开发实战指南(基础篇) 第7章 <b class='flag-5'>定时器</b>

    GD32开发实战指南(基础篇) 第8章 定时器

    Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。 GD32定时器除了 TIMER5 和 6(基本
    的头像 发表于 05-12 22:14 6345次阅读
    <b class='flag-5'>GD32</b>开发实战指南(基础篇) 第8章 <b class='flag-5'>定时器</b>

    GD32 Timer定时器周期时间计算公式#GD32 #单片机 #定时器

    单片机mcu
    聚沃科技
    发布于 :2024年01月23日 09:37:24

    f28335定时器频率为150, 定时器周期值为1000. 时钟频率150MHz 。定时时间是1ms ,这是周期寄存的值应该附多少。怎么算

    f28335定时器频率为150, 定时器周期值为1000. 时钟频率150MHz 。定时时间是1ms ,这是周期寄存
    发表于 12-27 09:29

    请教关于C6748 定时器TIMER 计算公式问题

    .我在用户手册64-Bit Timer Plus这一章没有看到详细的定时时间计算公式,所以不确定装载的数值。请问哪里有定时详细的说明?
    发表于 07-31 06:33

    定时器时间计算

    看了ti的技术文档,发现计算定时器定时时间计算上有点疑问。例如定时器1工作在关联32位模式下的定时时间。创龙视频资料中:
    发表于 07-08 17:05

    如何去计算Stm32定时器定时时间

    Stm32定时器定时计算通过计数溢出计算,也就是说计数溢出就触发中断计算公式:TimeOut = ((Prescaler + 1) * (Period + 1) ) / TimeClo
    发表于 08-05 07:56

    stm32 定时器 时间计算方法 精选资料推荐

    stm32 定时器 时间计算方法 和时钟分隔值解释参考(https://wenku.baidu.com/view/e3bdfb7601f69e31433294c4.html)定时器
    发表于 08-19 06:47

    单片机定时器溢出计算公式分享

    溢出需要的时间)那么(1 *** ) * 50 =( 1 / 12500 ) * 50 = 0.00008 * 50 = 0.004S = 4ms也就是说定时器每4ms溢出一次。 WTCR计算公...
    发表于 02-23 06:43

    GD32单片机定时器的花样用法

    GD32单片机定时器的花样用法前言:今天又是解决问题贴的一天,现在跑堂不熬汤,不给压力了,只能从论坛抽个问题发帖解决了,同时也欢迎各位有问题在论坛多多提问,这里大佬多多,你的问题会最大程度给予
    发表于 03-11 16:31

    通用定时器(Timer)

    在 Stellaris 系列 ARM 内部通常集成有 2~4 个通用定时器模块(General-Purpose Timer Module,GPTM),分别称为 Timer0、Timer
    发表于 01-13 16:34 21次下载

    单片机定时器周期计算公式

    定时器是单片机的重要功能模块之一,在检测、控制领域有广泛应用。定时器常用作定时时钟,以实现定时检测,定时响应、
    发表于 01-22 15:59 3.9w次阅读

    GD32E230开发笔记-GD32E230定时器控制

    GD32E230开发笔记-GD32E230定时器控制1.硬件设计2.软件设计定时器的配置3.设计效果4.程序源码1.硬件设计GD32E230
    发表于 12-02 14:36 28次下载
    <b class='flag-5'>GD</b>32E230开发笔记-<b class='flag-5'>GD</b>32E230<b class='flag-5'>定时器</b>控制

    电能的计算公式 电能的计算公式时间的单位

    电能是电力消耗的度量,它表示单位时间内消耗的电功率。电能的计算公式为: 电能(E)= 电功率(P)× 时间(t) 其中,电功率可以通过以下公式计算
    的头像 发表于 02-22 10:00 1955次阅读