有小伙伴反馈gd32 timer定时器的周期时间不知如何计算,今天就来安排。
我们分成两个系列来讲解——gd32f30x和gd32f4xx系列。
一、gd32f30x系列
要想计算timer的周期时间,首先要知道timer的时钟频率,看时钟频率当然就要看时钟树啦,在时钟树的右下方就标注了timer的时钟频率。
我们把图放大,可以看到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呢?
答案是否定的。我们来看下图方框中的提示,方框1中写到,如果apb1的分频系数为1的话,这些timer的频率就等于ck_apb1,如果apb1的分配系数不为1,则timer的频率等于ck_apb1*2。方框2中的内容和方框1中相同,就不再赘述。
那么apb1和apb2的分频系数在哪里设置的呢,答案就是——在系统时钟配置中,也就是systeminit函数中调用的system_clock_config函数。通常我们设置系统时钟和ahb时钟为120m,设置apb1分频系数为2,即apb1时钟为ahb时钟的二分之一60m;设置apb2分频系数为1,即apb2时钟等于ahb时钟120m。
好了,知道以上知识点我们就可以算出timer的时钟频率了。举个例子,我们设置ahb时钟为120m,apb1分频系数为2,我们来算下timer1的频率。首先,算出ck_apb1=ahb时钟/2 = 60m,其次,由于apb1分频系数不等于1,所以ck_timer1=ck_apb1*2 = 60m*2 = 120m。
算出timer的时钟频率后,我们看下timer最基础的配置代码:
有两个和周期时间相关的参数:
其一为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的时钟树:
可以看到ck_timer可以是apb时钟乘以1、乘以2或乘以4,那具体是乘以几呢?这个是根据时钟配置寄存器 1(rcu_cfg1) 中的第24位timersel来决定的:
gd32f4xx用户手册中对这一位描述的非常清晰,这里就不再赘述了。
好了,通过本期讲解,相信小伙伴们就可以轻松计算出timer的周期时间啦。
利用人工智能技术 可以在语音中观察抑郁症的迹象
国补退场,新能源汽车如何“续航”?
提高电感线圈的品质因数Q值,你用对方法了吗
小米副总裁跳槽百度 出任百度资本CFO
单核Rosetta 2的成绩结果仍然优于任何其他英特尔Mac
GD32 Timer定时器周期时间计算公式
移动雷达设备代替听诊器 实现永久性无触控监测
AirPower为什么会胎死腹中
144层3D NAND将引领闪存容量的重大革命
互联网新概念,什么是互联网+
无线液位传感器—简介
5种常见的电气元件的性能和符号等详细资料概述
USB HUB为笔记本全面展开扩展
激励器和电脑灯在灯光音响系统中的应用
手机90Hz和60Hz的显示刷新率有什么差异
智能化温室环境控制系统让农业种植变得更加高效
三星计划今年推出四款平板,其中性能最强的就是Galaxy Tab S4
德州仪器(TI)智能冰箱专业解决方案
涉水光学:透过雨雾湖海,光学与智能交叉融合
LT3042 具外部 NPN 的超低噪声 5Vin 至 2Vout、较高电流 (1A) 稳压器