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的周期时间啦。

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

    关注

    6032

    文章

    44514

    浏览量

    632929
  • 嵌入式
    +关注

    关注

    5068

    文章

    19014

    浏览量

    303219
  • 定时器
    +关注

    关注

    23

    文章

    3237

    浏览量

    114464
  • Timer
    +关注

    关注

    1

    文章

    63

    浏览量

    12771
  • GD32
    +关注

    关注

    7

    文章

    403

    浏览量

    24218
收藏 人收藏

    评论

    相关推荐

    GD32Timer定时器原理的详细讲解

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

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

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

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

    Modulation” 的缩写,简称脉宽调制,是利用微处理的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。 GD32定时器除了 TIMER5
    的头像 发表于 05-12 22:14 7835次阅读
    <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

    如何去计算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

    通用定时器(Timer)

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

    通用定时器(Timer

    通用定时器(Timer
    发表于 10-11 15:10 6次下载
    通用<b class='flag-5'>定时器</b>(<b class='flag-5'>Timer</b>

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

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

    ---GD32 MCU---TIMER1更新中断时间不准

    问题描述:用户实用Timer1产生10ms的定时器中断,但是每次却产生了20ms的中断,而且无论如何更改分频系数和加载值定时时间都不产生变化。原因:客户缺少了自动重新加载的函数,导致定时器
    发表于 11-18 16:36 9次下载
    ---<b class='flag-5'>GD32</b> MCU---<b class='flag-5'>TIMER</b>1更新中断<b class='flag-5'>时间</b>不准

    stm32关于通用定时器周期、频率计算公式

    (TIMx_ARR)定时器的时钟来源(4个):1)内部时钟(CK_INT)2)外部时钟模式 1:外部输入脚(TIx)3)外部时钟模式 2:外部触发输入(ETR)4)内部触发输入(ITRx)定时器周期
    发表于 11-26 15:21 60次下载
    stm32关于通用<b class='flag-5'>定时器</b>的<b class='flag-5'>周期</b>、频率<b class='flag-5'>计算公式</b>

    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>控制

    示波器周期计算公式

    示波器作为电子测量领域的重要工具,其能够直观地显示电压信号随时间变化的波形,对于电路分析、信号检测等领域具有不可替代的作用。在示波器的使用中,我们经常需要计算信号的周期,以了解信号的特性。本文将详细介绍示波器
    的头像 发表于 05-17 17:25 2062次阅读