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

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

3天内不再提示

GD32对Timer定时器原理的详细讲解

开山师傅 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-04-22 17:02 次阅读

GD32 Timr定时器看起来比较复杂啊。一看GD32E10x 的SPEC:一个高级定时器,三个通用定时器,还有一个基本定时器。

项目上想用来做分时处理程序都不知道用哪个?

就用通用的定时器 timer1

一起看下时钟树,如下图所示:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdrdW5oZW5yeQ==,size_16,color_FFFFFF,t_70GD32时钟树部分硬件展示

TIMER1的时钟是CK_TIMER1,要提供CK_TIMER1需要TIMER1 enable并且需要提供具体的时钟

具体的时钟

if(APB1 prescale = 1 ) x 1 else x 2

我们的CK_SYS时钟(系统时钟)经过Prescaler之后最大频率是CK_AHB(120MHz)

然后经过预分频,APB1频率最大到60MHz,如果预分频系数是1的话,则提供到TIMER的频率是x2。

也就是60*2 = 120MHz

所以TIMER1的时钟就用基于120MHz去分频

我想每200ms 获取一次timer1的中断。改怎么办?

有两个参数可以一起去实现这个功能。

1个事TIMER的prescale 可以先把这个120MHz分频,比如我分频为1MHz,那么prescale就是120,不过这里timer_initpara.prescaler不能设置为120,要设置为119.

因为具体的计算方式是120MHz/(prescaler+1)

这样拿到了1MHz的clock.那获取每200ms的中断再要做什么呢?

这里有reload 参数timer_initpara.period ,官方成为“TIMER counter auto reload register”

这个reload参数意思是:当计数计到period参数的时候就做一次更新,从0开始重新计算,中断就产生一次。

前面1MHz 意思是1s 可以计数1000 000次。也就是1ms 可以计数1000次,我需要200ms更新一次,那就说我需要计数 200 * 1000,所以reload就是200 * 1000 = 200000

timer_initpara.period 就是写为200000

审核编辑:符乾江

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

    关注

    23

    文章

    3175

    浏览量

    112658
  • 时钟树
    +关注

    关注

    0

    文章

    52

    浏览量

    10674
收藏 人收藏

    评论

    相关推荐

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

    有小伙伴反馈GD32 Timer定时器的周期时间不知如何计算,今天就来安排。
    的头像 发表于 01-22 09:53 1539次阅读
    <b class='flag-5'>GD32</b> <b class='flag-5'>Timer</b><b class='flag-5'>定时器</b>周期时间计算公式

    GD32和STM32有何区别?GD32如何替换STM32呢?

    GD32和STM32有何区别?GD32如何替换STM32呢? GD32和STM32是两种不同的微控制器系列,一般被用于嵌入式系统开发。GD32是中国华大基因(Gigadevice)公司
    的头像 发表于 11-22 18:18 4224次阅读

    定时器如何实现定时任务

    1.1、单次定时任务实现 boost 的asio库里有几个定时器,老的有 deadline_timer , 还有三个可配合 C++11 的 chrono
    的头像 发表于 11-09 17:20 483次阅读

    Linux驱动定时器使用示例

    定时器使用示例 使用步骤: 1、调用 init_timer 初始化一个定时器,给 struct timer_list 各成员赋值。 2、调用 add_
    的头像 发表于 10-04 15:47 444次阅读

    GD32F103CBT6 Systick定时器不准的原因?如何解决?

    我新建了GD32的工程,用GD标准库,在测试滴答定时器中断时,发现中断能进去,但是进一次中断大概是7ms左右。我只把原来主频108M改成72M,原来108M系统初始化不了,进不去Main函数。
    发表于 09-27 07:30

    GD32如何替换STM32?

    GD32如何替换STM32?
    的头像 发表于 09-18 10:58 1676次阅读
    <b class='flag-5'>GD32</b>如何替换STM32?

    GD32与STM32谁更好?

    文章将详细探讨。 简介 GD32是由GigaDevice推出的一款32位MCU,为优化成本和提升性能而设计。GigaDevice是一家中国芯片公司,成立于2005年,专注于设计、生产和销售嵌入式存储器
    的头像 发表于 08-16 11:33 1241次阅读

    GD32与MM32哪个好?

    芯片的时候,很多人会犯愁,不知道该选择哪个。 那么,GD32与MM32哪个好呢?在本文中,我们将详细比较这两款芯片,为大家提供更多的信息,帮助大家做出更好的选择。 1. 基本介绍 GD32系列是迄今为止国产IC设备中的一款高性能
    的头像 发表于 08-16 11:33 1276次阅读

    GD32与STM32兼容吗?

    GD32与STM32兼容吗? GD32与STM32是两个不同的微控制器系列,是由两个不同的公司设计和生产的。GD32系列是由国内的长沙国芯微电子设计和生产的,而STM32系列则是由欧洲
    的头像 发表于 08-16 11:32 2430次阅读

    GD32和AT32哪个好?

    GD32和AT32哪个好? GD32和AT32是两种不同的微控制器型号,它们都是国内开发的芯片。GD32系列由国内芯片制造商GigaDevice Semiconductor开发,而AT32系列则由
    的头像 发表于 08-16 11:32 1686次阅读

    gd32和stm32哪个好?

    gd32和stm32哪个好? GD32和STM32是两种常见的微控制器系列,是开发者们常用的开发板核心。尽管它们相似之处很多,但它们也存在着差异,本文将深入探讨GD32和STM32,分享它们的优缺点
    的头像 发表于 08-16 11:32 1235次阅读

    gd32和stm32的编程区别

    的,本文将就此进行详细地解析。 一、GD32和STM32的概述 GD32和STM32是龙芯(RISC-V)和意法半导体(ARM Cortex-M)两家公司推出的芯片,由于两家公司的巨大影响力,它们
    的头像 发表于 08-16 11:32 6145次阅读

    ch32和gd32的区别

    ch32和gd32的区别 Ch32和Gd32是两种不同的芯片,它们有着不同的架构、性能、功耗等特征。本文将详细介绍Ch32和Gd32的区别。 一、架构 Ch32采用的是ARM Cort
    的头像 发表于 08-16 11:16 1476次阅读

    STM32L4定时器(TIMER)介绍

    电子发烧友网站提供《STM32L4定时器(TIMER)介绍.pdf》资料免费下载
    发表于 08-01 14:24 0次下载
    STM32L4<b class='flag-5'>定时器</b>(<b class='flag-5'>TIMER</b>)介绍

    51单片机定时器讲解

    前面我们讲解了通用IO输入输出,延时函数和外部中断,今天我们讲解单片机另一个重要的功能,定时器。顾名思义,定时器就是用来定时的,与延时函数的
    发表于 07-14 16:22 2109次阅读
    51单片机<b class='flag-5'>定时器</b><b class='flag-5'>讲解</b>