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

    文章

    3258

    浏览量

    115855
  • 时钟树
    +关注

    关注

    0

    文章

    55

    浏览量

    10855
收藏 人收藏

    相关推荐

    GD32VF103使用核内部timer定时器实现延时函数,为什么系统时钟要除以4?

    使用核内部timer定时器实现延时函数,为什么系统时钟要除以4? 复制 void delay_1ms(uint32_t count) { uint64_t start_mtime
    发表于 09-27 09:54

    为什么在rt-thread studio创建不了gd32的项目?

    为什么在rt-thread studio中创建一个gd32项目时候,他打开的那个选型芯片型号是,安装好了,没有确认键啊,只有退出sdk管理,然后就卡在那里了,创建不了gd32的项目
    发表于 09-27 09:52

    GD32 MCU入门教程】GD32 MCU GPIO 结构与使用注意事项

    本文是专门为基于GD32 MCU开发的工程设计人员提供,主要介绍了GPIO的功能配置、内部结构以及在不同场景使用时的注意事项,旨在帮助GD32 MCU开发者优化对通用型输入输出端口(GPIO)的使用,正确快速的使用GD32 MC
    的头像 发表于 09-07 10:34 1060次阅读
    【<b class='flag-5'>GD32</b> MCU入门教程】<b class='flag-5'>GD32</b> MCU GPIO 结构与使用注意事项

    GD32 MCU 入门教程】GD32 MCU FPU 使用方法

    GD32 MCU FPU 使用方法
    的头像 发表于 08-25 09:24 840次阅读
    【<b class='flag-5'>GD32</b> MCU 入门教程】<b class='flag-5'>GD32</b> MCU FPU 使用方法

    GD32如何替换STM32

    GD32替换Stm32注意事项
    发表于 08-23 11:31 5次下载

    GD32 MCU 入门教程】GD32 MCU 常见外设介绍(14)RTC 模块介绍

    GD32 MCU内部提供了一个RTC(实时时钟)模块,通过RTC可以实现日历时钟、闹钟等功能。RTC也可以用于深度睡眠或待机模式的低功耗唤醒。不同系列的GD32 MCU在RTC设计和功能上有所区别,总体可以分为三大系列:
    的头像 发表于 08-23 09:18 662次阅读
    【<b class='flag-5'>GD32</b> MCU 入门教程】<b class='flag-5'>GD32</b> MCU 常见外设介绍(14)RTC 模块介绍

    GD32 MCU 入门教程】GD32 MCU 常见外设介绍(12)FMC 模块介绍

    闪存控制(FMC),提供了片上闪存需要的所有功能。FMC 也提供了页擦除,整片擦除,以及32 位整字或 16 位半字编程闪存等操作。 GD32 MCU 支持不同类型编程的具体说明如下表 GD32 MCU 不同系列编程区别所示。
    的头像 发表于 08-21 09:56 1450次阅读
    <b class='flag-5'>GD32</b> MCU 入门教程】<b class='flag-5'>GD32</b> MCU 常见外设介绍(12)FMC 模块介绍

    GD32 MCU 入门教程】一、GD32 MCU 开发环境搭建(3)使用 Embedded Builder 开发 GD32

    GD32系列为通用型MCU,所以开发环境也可以使用通用型的IDE,目前使用较多的是KEIL、IAR、 GCC和Embedded Builder,客户可以根据个人喜好来选择相应的开发环境。
    的头像 发表于 08-08 16:03 1302次阅读
    【<b class='flag-5'>GD32</b> MCU 入门教程】一、<b class='flag-5'>GD32</b> MCU 开发环境搭建(3)使用 Embedded Builder 开发 <b class='flag-5'>GD32</b>

    GD32 MCU 入门教程】一、GD32 MCU 开发环境搭建(2)使用 IAR 开发 GD32

    GD32系列为通用型MCU,所以开发环境也可以使用通用型的IDE,目前使用较多的是KEIL、IAR、 GCC和Embedded Builder,客户可以根据个人喜好来选择相应的开发环境。
    的头像 发表于 08-08 15:40 923次阅读
    【<b class='flag-5'>GD32</b> MCU 入门教程】一、<b class='flag-5'>GD32</b> MCU 开发环境搭建(2)使用 IAR 开发 <b class='flag-5'>GD32</b>

    GD32 MCU 入门教程】一、GD32 MCU 开发环境搭建(1)使用Keil开发GD32

    GD32系列为通用型MCU,所以开发环境也可以使用通用型的IDE,目前使用较多的是KEIL、IAR、 GCC和Embedded Builder,客户可以根据个人喜好来选择相应的开发环境。
    的头像 发表于 08-08 15:01 1851次阅读
    【<b class='flag-5'>GD32</b> MCU 入门教程】一、<b class='flag-5'>GD32</b> MCU 开发环境搭建(1)使用Keil开发<b class='flag-5'>GD32</b>

    GD32无法烧写的原因?

    GD32无法烧写
    发表于 07-26 07:09

    GD32L233移植FreeRTOS,用定时器2做延时函数在线调试时无法进入TIMER2的中断服务函数,怎么解决?

    GD32L233移植FreeRTOS,用定时器2做延时函数在线调试发现无法进入TIMER2的中断服务函数。
    发表于 07-26 06:39

    GD32E230C8T6高级定时器timer0无法正常输出PWM波形的原因?

    原本想用高级定时器的中央对齐计数模式来输出SPWM波,但是TIMER0的CH0,CH1等口,都无法正常输出PWM波形,换成普通定时器就可以了,STM32里对于高级定时器输出PWM波形,
    发表于 07-26 06:34

    定时器相关的寄存有哪些类型

    ,微控制通常提供了一系列的定时器寄存,用于配置和控制定时器的行为。 以下是一些常见的与定时器相关的寄存
    的头像 发表于 07-12 10:25 1157次阅读

    鸿蒙开发系统基础能力:Timer定时器

    设置一个定时器,该定时器定时器到期后执行一个函数。
    的头像 发表于 06-28 11:33 1162次阅读
    鸿蒙开发系统基础能力:<b class='flag-5'>Timer</b><b class='flag-5'>定时器</b>