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

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

3天内不再提示

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

W55MH32 来源:W55MH32 作者:W55MH32 2025-06-20 13:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单芯片解决方案,开启全新体验——W55MH32 高性能以太网单片机

W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm® Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数据处理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP协议栈、内置MAC以及PHY,拥有独立的32KB以太网收发缓存,可供8个独立硬件socket使用。如此配置,真正实现了All-in-One解决方案,为开发者提供极大便利。

在封装规格上,W55MH32 提供了两种选择:QFN100和QFN68。

W55MH32L采用QFN100封装版本,尺寸为12x12mm,其资源丰富,专为各种复杂工控场景设计。它拥有66个GPIO、3个ADC、12通道DMA、17个定时器、2个I2C、5个串口、2个SPI接口(其中1个带I2S接口复用)、1个CAN、1个USB2.0以及1个SDIO接口。如此丰富的外设资源,能够轻松应对工业控制中多样化的连接需求,无论是与各类传感器、执行器的通信,还是对复杂工业协议的支持,都能游刃有余,成为复杂工控领域的理想选择。 同系列还有QFN68封装的W55MH32Q版本,该版本体积更小,仅为8x8mm,成本低,适合集成度高的网关模组等场景,软件使用方法一致。更多信息和资料请进入网站或者私信获取。

此外,本W55MH32支持硬件加密算法单元,WIZnet还推出TOE+SSL应用,涵盖TCP SSL、HTTP SSL以及 MQTT SSL等,为网络通信安全再添保障。

为助力开发者快速上手与深入开发,基于W55MH32L这颗芯片,WIZnet精心打造了配套开发板。开发板集成WIZ-Link芯片,借助一根USB C口数据线,就能轻松实现调试、下载以及串口打印日志等功能。开发板将所有外设全部引出,拓展功能也大幅提升,便于开发者全面评估芯片性能。

若您想获取芯片和开发板的更多详细信息,包括产品特性、技术参数以及价格等,欢迎访问官方网页,我们期待与您共同探索W55MH32的无限可能。

wKgZPGgbOfaANhwzACodXd3sVzg463.png

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

本章参考资料:《W55H32参考手册》 基本定时器章节。学习本章时,配合参考资料一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。

1 定时器分类

定时器 计数器分辨率 计数器类型 预分频系数 产生 DMA 请求 捕获 / 比较通道 互补输出
TIM1、TIM8 16 位 向上,向下,向上 / 向下 1~65536 之间的任意整数 可以 4
TIM2、TIM3、TIM4、TIM5 16 位 向上,向下,向上 / 向下 1~65536 之间的任意整数 可以 4 没有
TIM9、TIM12 16 位 向上 1~65536 之间的任意整数 不可以 2 没有
TIM10、TIM11、TIM13、TIM14 16 位 向上 1~65536 之间的任意整数 不可以 1 没有
TIM6、TIM7 16 位 向上 1~65536 之间的任意整数 可以 0 没有

高级控制定时器(TIM1 和 TIM8)

两个高级控制定时器(TIM1 和 TIM8)可以被看成是分配到 6 个通道的三相 PWM 发生器,它具有带死区插入的互补 PWM 输出,还可以被当成完整的通用定时器。四个独立的通道可以用于:

输入捕获

输出比较

产生 PWM(边缘或中心对齐模式)

单脉冲输出

配置为 16 位标准定时器时,它与 TIMx 定时器具有相同的功能。配置为 16 位 PWM 发生器时,它具有全调制能力(0~100%)。

在调试模式下,计数器可以被冻结,同时 PWM 输出被禁止,从而切断由这些输出所控制的开关。很多功能都与标准的 TIM 定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功能与 TIM 定时器协同操作,提供同步或事件链接功能。

通用定时器(TIM2、TIM3、TIM4、TIM5)

本系列产品中,内置了 4 个可同步运行的标准定时器(TIM2、TIM3、TIM4、TIM5)。每个定时器都有一个 16 位的自动加载递加/递减计数器、一个 16 位的预分频器和 4 个独立的通道,每个通道都可用于输入捕获、输出比较、PWM 和单脉冲模式输出。它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。在调试模式下,计数器可以被冻结。任一标准定时器都能用于产生 PWM 输出。每个定时器都有独立的 DMA 请求机制。这些定时器还能够处理增量编码器信号,也能处理 1 至 3 个霍尔传感器的数字输出。

通用定时器(TIM10、TIM11、TIM9)

这些定时器基于 16 位自动重新加载计数器和 16 位预分频器。TIM10 和 TIM11 有一个独立的通道,而 TIM9 有两个用于输入捕获/输出比较、PWM 或单脉冲模式的独立通道输出它们可以与TIM2、TIM3、TIM4、TIM5 全功能同步通用定时器。它们也可以用作简单的时基。

通用定时器(TIM13、TIM14、TIM12)

这些定时器基于 16 位自动重新加载计数器和 16 位预分频器。TIM13 和 TIM14 有一个独立的通道,而 TIM12 有两个独立的通道用于输入捕获/输出比较、PWM 或单脉冲模式的独立通道输出它们可以与 TIM2、TIM3、TIM4、TIM5 全功能同步通用定时器。它们也可以用作简单的时基。独立看门狗独立的看门狗是基于一个 12 位的递减计数器和一个 8 位的预分频器,它由一个内部独立的40kHz 的 RC 振荡器提供时钟;因为这个 RC 振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以被当成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过选项字节可以配置成是软件或硬件启动看门狗。在调试模式下,计数器可以被冻结。

基本定时器 TIM6 和 TIM7

这些定时器主要用于 DAC 触发器的生成。它们也可以用作通用 16 位时基。

窗口看门狗内有一个 7 位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式下,计数器可以被冻结。

系统时基定时器

这个定时器是专用于实时操作系统,也可当成一个标准的递减计数器。它具有下述特性:

24 位的递减计数器

自动重加载功能

当计数器为 0 时能产生一个可屏蔽系统中断

编程时钟源

2 基本定时器功能框图讲解

基本定时器的核心是时基,不仅基本定时器有,通用定时器和高级定时器也有。学习定时器时,我们先从简单的基本定时器学起, 到了后面的通用和高级定时器的学习中,我们直接跳过时基部分的讲解即可。 基本定时器的功能框图见下图,基本定时器功能框图 :

wKgZO2gu3xeAX-ELAAP9leCc04U813.png

2.1 时钟源

计数器的时钟由内部时钟(CK_INT)提供。

TIMx_CR1 寄存器的 CEN 位和 TIMx_EGR 寄存器的 UG 位是实际的控制位,(除了 UG 位被自动清除外)只能通过软件改变它们。一旦置 CEN 位为'1',内部时钟即向预分频器提供时钟。

2.2 计数器时钟

定时器时钟经过 PSC 预分频器之后,即 CK_CNT,用来驱动计数器计数。PSC是一个16 位的预分频器, 可以对定时器时钟 TIMxCLK 进行 1~65536之间的任何一个数进行分频。具体计算方式为:CK_CNT=TIMxCLK/(PSC+1)。

2.3 计数器

计数器 CNT 是一个 16 位的计数器,只能往上计数,最大计数值为65535。当计数达到自动重装载寄存器的时候产生更新事件,并清零从头开始计数。

2.4 自动重装载寄存器

自动重装载寄存器 ARR 是一个 16位的寄存器,这里面装着计数器能计数的最大数值。当计数到这个值的时候,如果使能了中断的话,定时器就产生溢出中断。

2.5 定时时间的计算

定时器的定时时间等于计数器的中断周期乘以中断的次数。计数器在 CK_CNT的驱动下,计一个数的时间则是 CK_CLK的倒数, 等于:1/(TIMxCLK/(PSC+1)),产生一次中断的时间则等于:1/(CK_CLK * ARR)。如果在中断服务程序里面设置一个变量time, 用来记录中断的次数,那么就可以计算出我们需要的定时时间等于:1/CK_CLK* (ARR+1)*time。

3 定时器初始化结构体详解

在标准库函数头文件w55mh32_tim.h中对定时器外设建立了四个初始化结构体,基本定时器只用到其中一个即TIM_TimeBaseInitTypeDef, 具体的见 代码清单:基本定时器-1 ,其他三个我们在高级定时器章节讲解。

代码清单:基本定时器-1 定时器基本初始化结构体

typedef struct {
    uint16_t TIM_Prescaler;          // 预分频器
    uint16_t TIM_CounterMode;        // 计数模式
    uint32_t TIM_Period;             // 定时器周期
    uint16_t TIM_ClockDivision;      // 时钟分频
    uint8_t TIM_RepetitionCounter;   // 重复计算器
} TIM_TimeBaseInitTypeDef;

TIM_Prescaler: 定时器预分频器设置,时钟源经该预分频器才是定时器时钟,它设定TIMx_PSC寄存器的值。可设置范围为0至65535,实现1至65536分频。

TIM_CounterMode: 定时器计数方式,可是在为向上计数、向下计数以及三种中心对齐模式。基本定时器只能是向上计数,即TIMx_CNT只能从0开始递增,并且无需初始化。

TIM_Period: 定时器周期,实际就是设定自动重载寄存器的值,在事件生成时更新到影子寄存器。可设置范围为0至65535。

TIM_ClockDivision: 时钟分频,设置定时器时钟CK_INT频率与数字滤波器采样时钟频率分频比,基本定时器没有此功能,不用设置。

TIM_RepetitionCounter: 重复计数器,属于高级控制寄存器专用寄存器位,利用它可以非常容易控制输出PWM的个数。这里不用设置。

虽然定时器基本初始化结构体有5个成员,但对于基本定时器只需设置其中两个就可以,想想使用基本定时器就是简单。

WIZnet 是一家无晶圆厂半导体公司,成立于 1998 年。产品包括互联网处理器 iMCU™,它采用 TOE(TCP/IP 卸载引擎)技术,基于独特的专利全硬连线 TCP/IP。iMCU™ 面向各种应用中的嵌入式互联网设备。

WIZnet 在全球拥有 70 多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。

香港办事处管理的区域包括:澳大利亚、印度、土耳其、亚洲(韩国和日本除外)。

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

    关注

    6074

    文章

    45333

    浏览量

    663279
  • 以太网
    +关注

    关注

    41

    文章

    5923

    浏览量

    179470
  • 定时器
    +关注

    关注

    23

    文章

    3360

    浏览量

    121699
  • 触发器
    +关注

    关注

    14

    文章

    2050

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32定时器(二)定时器中断

    常规定时器:基本定时器TIM6&TIM7)、通用定时器TIM2~
    的头像 发表于 07-21 14:54 5232次阅读
    STM32<b class='flag-5'>定时器</b>(二)<b class='flag-5'>定时器</b>中断

    第二十一章 TIM——通用定时器

    本篇文章介绍了W55MH32的通用定时器TIM2~TIM5等),其由16位自动装载计数和可编程预分频构成,具备输入捕获、输出比较、PW
    的头像 发表于 06-20 13:57 1370次阅读
    <b class='flag-5'>第二十</b>一章 <b class='flag-5'>TIM</b>——通用<b class='flag-5'>定时器</b>

    第二十二章 TIM——高级定时器

    本章介绍了W55MH32的高级定时器TIM1和TIM8),其含时基单元等,具备输入捕获、输出比较、PWM生成等功能,还支持互补输出、死区插入等,适用于工业电机控制,也提及相关配置结构体。
    的头像 发表于 06-20 13:58 1390次阅读
    <b class='flag-5'>第二十</b>二章 <b class='flag-5'>TIM</b>——高级<b class='flag-5'>定时器</b>

    明德扬视频分享点拨FPGA课程--第二十章  提高效率技巧

    第二十章提高效率技巧1. 利用GVIM制作模板http://yunpan.cn/cjZTiDA9pY56x访问密码 c359
    发表于 11-07 09:22

    实验五 TIM定时器实验

    嵌入式TIM定时器实验
    发表于 12-17 20:48 7次下载

    STM32通用定时器TIM2的使用方法解析

    STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒
    发表于 11-21 15:40 6.6w次阅读
    STM32通用<b class='flag-5'>定时器</b><b class='flag-5'>TIM</b>2的使用方法解析

    stm32—定时器配置

    目录定时器组成通用寄存通用寄存简介:通用定时器 TIMx (TIM2-TIM5 )的功能:通用定时器
    发表于 11-22 17:51 11次下载
    stm32—<b class='flag-5'>定时器</b>配置

    STM32定时器-基本定时器

    ,分为基本定时器,通用定时器和高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的
    发表于 11-23 18:21 32次下载
    STM32<b class='flag-5'>定时器</b>-基本<b class='flag-5'>定时器</b>

    STM32-通用定时器-定时器中断

    1STM32的定时器STM32F103ZET6一共有8个定时器,其中分别为:高级定时器TIM1、TIM8);通用
    发表于 11-26 15:36 16次下载
    STM32-通用<b class='flag-5'>定时器</b>-<b class='flag-5'>定时器</b>中断

    通过TIM输出比较做一个定时器

    TIM定时器模块的简称。TIM的核心是一个16位的自由定时器(TCNT)。有8个完整的16位的捕捉/比较(IC/OC)通道。 模块运行时,16位的自由
    发表于 11-26 20:21 11次下载
    通过<b class='flag-5'>TIM</b>输出比较做一个<b class='flag-5'>定时器</b>

    STM32定时器学习---基本定时器

    互联型产品外,工位8个定时器TIM6、TIM7:基本定时器TIM2/3/4/5:通用定时器
    发表于 12-02 14:06 28次下载
    STM32<b class='flag-5'>定时器</b>学习---基本<b class='flag-5'>定时器</b>

    STM8学习笔记---定时器 TIM4功能实现

    STM8单片机的TIM4和TIM6是8位基本定时器定时器功能如下:基本定时器的功能比较简单,一般只用来实现
    发表于 12-27 18:31 8次下载
    STM8学习笔记---<b class='flag-5'>定时器</b> <b class='flag-5'>TIM</b>4功能实现

    STM32通用定时器TIM2的使用方法解析

    STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒
    发表于 02-11 10:59 6次下载
    STM32通用<b class='flag-5'>定时器</b><b class='flag-5'>TIM</b>2的使用方法解析

    STM32的通用定时器

    STM32F1 的定时器非常多,由 2 个基本定时器TIM6、TIM7)、4 个通用定时器TIM2-
    的头像 发表于 02-10 14:47 4324次阅读

    STM32 TIM—基本定时器

    STM32F4xx系列控制有共有14个TIM定时器。其中2个高级控制定时器TIM1和TIM8、
    的头像 发表于 07-22 17:05 6573次阅读
    STM32 <b class='flag-5'>TIM</b>—基本<b class='flag-5'>定时器</b>