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

单芯片解决方案,开启全新体验——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 基本定时器功能框图讲解

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

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 多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。

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

为您推荐

旅途自驾怕麻烦?平安好车主汽车托运,让您从 “省心” 开始!

旅途自驾怕麻烦?平安好车主汽车托运,让您从 “省心” 开始!

夏天的风一吹,心就飘向了山林蝉鸣、海边浪涌的远方。可一想到长途自驾的糟心事,好心情瞬间打折扣 —— 开十几个小时车,腰酸...

2025-08-13 标签:机械热点锂电池
平安好车主--让每一次转动方向盘,都带着稳稳的底气!

平安好车主--让每一次转动方向盘,都带着稳稳的底气!

还在为车险投保犯愁吗?面对五花八门的险种、参差不齐的平台,是不是挑得眼花缭乱,生怕踩坑?别担心,选平安好车主 ...

2025-07-01 标签:欧盟5g网络英伟达
引爆设计图纸革命!华兴源创携手新迪数字开启数字协同新时代

引爆设计图纸革命!华兴源创携手新迪数字开启数字协同新时代

“图纸又发错了。”李工望着客户传来的截图,眉头紧了紧。这是第三次设计改动了,可车间拿到的还是旧版本图纸,连线孔位置都对不...

CMOS的逻辑门如何应用在电路中

CMOS的逻辑门如何应用在电路中

CMOS的逻辑门如何应用在电路中 前言 在如今的电子电路中,CMOS逻辑门有着接近零静态功耗和超高集成度的特点...

2025-06-25 标签:逻辑门cmos电路光伏热点
「全球电压通吃」:优比施UPS如何让美日欧设备无缝切换,告别变压器?

「全球电压通吃」:优比施UPS如何让美日欧设备无缝切换,告别变压器?

——一部设备兼容全球电网的工业逻辑 电压差异:跨国设备部署的“隐形杀手” 当中国制造的激光切割机运抵美国工厂,或日本...

当前非电脑浏览器正常宽度,请使用移动设备访问本站!