HC32F4A0 的外设硬件 Timer 单元一共 29 个(不含内核 SysTick、RTC、WDT):
-
Timer0(基础定时器):2 个,16bit
最简单,只做定时 / 周期中断,没有 PWM 通道。
-
Timer2(通用定时器):4 个,16bit
基础定时 + 少量 PWM,资源轻量。
-
TimerA(通用定时器 A):12 个,16bit
功能很强,4 通道 PWM、正交编码、级联成 32bit 计数,小华官方例程直接拿来做 1ms 系统滴答定时器。
-
Timer4(电机专用 PWM 定时器):3 个,16bit
电机 FOC 互补 PWM、死区、刹车,适合电机控制,不推荐单纯做软件定时。
-
Timer6(多功能高级 PWM 定时器):8 个,支持 16/32bit 模式
最高性能 PWM,带 HRPWM(50ps 高分辨率),适合高速波形生成,32bit 模式长定时很舒服。
额外:Cortex-M4 内核自带 SysTick(内核定时器,不属于外设 Timer)、RTC 实时时钟、2 路 WDT 看门狗。
怎么选,哪个最合适做定时器(分场景)
场景 1:系统滴答、1ms 中断、普通周期性软件定时(最常用)
首选:Timer0
- 优点:最轻量,寄存器简单,只具备基础定时功能,不占用 PWM 资源;只需要周期中断、不需要输出波形时,优先用 Timer0,把 TimerA/Timer6 留给 PWM。
- 备选:TimerA,官方 SDK 有现成
timera_base_timer 例程直接 1ms 定时;缺点功能多,寄存器稍微复杂一点。
SysTick 也可以做 1ms 滴答,但 SysTick 是内核定时器,进入低功耗 Stop 模式会停掉;如果低功耗下还要继续跑定时,必须用外设 Timer0/TimerA。
场景 2:需要长定时,不想频繁进中断(32bit 计数)
首选 Timer6,它支持 32 位计数器,单次定时窗口极大,适合长周期定时;缺点是高级 PWM 外设,相对复杂,一般留给高速 PWM。
场景 3:定时 + 同时输出 PWM / 脉冲捕获 / 编码器
首选 TimerA,性价比最高,12 个单元很多,支持正交编码器、PWM 输出、输入捕获,工业控制最常用。
不推荐单纯做软件定时
Timer4:电机专用,死区、互补输出是为 FOC 设计,资源宝贵,尽量留给电机驱动。
一句话推荐
- 只需要周期中断、无 PWM、优先节省资源 → Timer0(推荐)
- 定时 + PWM / 编码器捕获 → TimerA
- 长周期、高精度高速波形 → Timer6
- 简单裸机滴答、不进 Stop 低功耗 → 直接内核 SysTick
更多 MCU 定时器选型与外设驱动话题,也欢迎到 云栈社区 一起交流。
|