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

    文章

    3361

    浏览量

    121756
  • 时钟树
    +关注

    关注

    0

    文章

    58

    浏览量

    11217
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    PWM、定时器、SysTick 区别及应用场景

    。下面我们来梳理清楚。一、基本概念定时器Timer)MCU内最基础的计数外设,通过计数时钟周期实现定时、计数功能。多数MCU内部有多个通用定时器,可配置为
    的头像 发表于 11-17 10:53 238次阅读
    PWM、<b class='flag-5'>定时器</b>、SysTick 区别及应用场景

    RVMCU课堂「21」: 手把手教你玩转RVSTAR—看门狗定时器

    看门狗定时器(Watch Dog Timer,WDT或WDGT),是一种微控制为了防止程序“跑飞”而设计的一种硬件机制,让系统在因电磁干扰或者软件错误而当机的时候可以复位系统,从而具备自修复的能力
    发表于 10-29 06:01

    gd32 env配置报错是什么原因呢?

    rtt官网下载源码和env后使用env配置gd32报如下错误请问是什么原因呢?
    发表于 09-25 06:19

    SysTick系统滴答定时器简介

    SysTick—系统定时器是属于CM33内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数,计数每计数一次的时间为 1/SYSCLK,一般我们设置系统时
    的头像 发表于 09-23 09:50 1338次阅读
    SysTick系统滴答<b class='flag-5'>定时器</b>简介

    GD32的串口DMA收发数据失败怎么解决?

    gd32_hw_usart_init()函数中并未注册DMA收发的方式, GD32该函数如下: 而STM32的该函数如下: 查找GD32的串口操作库中相关的一些DMA操作也缺失,不知是我才疏学浅不知如何开启该方式
    发表于 09-17 06:04

    rt-thread studio中创建不了gd32项目是怎么回事?

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

    第二十章 TIM——基本定时器

    本章介绍了W55H32基本定时器TIM6、TIM7,16位向上计数,含时钟源、预分频等,讲解定时计算及初始化结构体。
    的头像 发表于 06-20 13:51 909次阅读
    第二十章 TIM——基本<b class='flag-5'>定时器</b>

    TIMER定时器

    TIMER0和TIMER7定时器载波相位有偏差,如何解决
    发表于 06-06 14:41

    MCU定时器/计数

    RISC-V核低功耗MCU通过灵活的定时器架构、低功耗模式适配及硬件级中断优化,在工业控制、智能家居等场景中实现高精度计时与能耗控制的协同设计,满足复杂任务调度与实时响应的双重需求‌。 一、‌硬件
    的头像 发表于 04-27 13:54 597次阅读

    TPS3435 纳米静态电流精密超时看门狗定时器数据手册

    TPS3435 是一款超低功耗 (典型值为 250nA) 器件,提供可编程超时看门狗定时器。 TPS3435 提供高精度超时看门狗定时器,具有适用于各种应用的一系列功能。超时看门狗定时器可由
    的头像 发表于 04-09 15:49 722次阅读
    TPS3435 纳米静态电流精密超时看门狗<b class='flag-5'>定时器</b>数据手册

    GD32与STM32有什么区别

    电子发烧友网站提供《GD32与STM32有什么区别.docx》资料免费下载
    发表于 04-03 17:27 0次下载

    GD32单片机GPIO结构及注意事项

    电子发烧友网站提供《GD32单片机GPIO结构及注意事项.pdf》资料免费下载
    发表于 02-07 17:27 3次下载
    <b class='flag-5'>GD32</b>单片机GPIO结构及注意事项

    GD32G5x3系列高分辨率定时器使用指南

    电子发烧友网站提供《GD32G5x3系列高分辨率定时器使用指南.pdf》资料免费下载
    发表于 01-22 17:32 1次下载
    <b class='flag-5'>GD</b>32G5x3系列高分辨率<b class='flag-5'>定时器</b>使用指南

    #新年新气象,大家新年快乐!#emWin应用开发——基于GD32

    emWin 是一个高效的嵌入式图形用户界面(GUI)库,广泛应用于各种嵌入式系统中。GD32 是一系列由 GigaDevice 公司推出的高性能、低功耗的 ARM Cortex-M 微控制。将
    发表于 01-14 16:34

    定时器已安排!开发小白看过来~

    本文将为您详细介绍Air201定时器的基本操作与设置,确保您轻松上手,包教包会! 在Air201模组搭载的LuatOS系统中,定时器timer)是一项基础且关键的服务。 它允许开发者
    的头像 发表于 12-31 14:30 769次阅读
    <b class='flag-5'>定时器</b>已安排!开发小白看过来~