CC13x2/CC26x2 AUX_TIMER模块深度解析:从寄存器操作到PWM与捕获实战

发布时间:2026/7/26 7:18:33
CC13x2/CC26x2 AUX_TIMER模块深度解析:从寄存器操作到PWM与捕获实战 1. AUX_TIMER模块概述与核心价值在嵌入式开发尤其是低功耗无线MCU领域定时器Timer的地位堪比心脏之于人体。它不仅是实现精准延时的基础更是驱动PWM波形、捕获外部事件、构建复杂时序逻辑的核心引擎。TI的CC13x2/CC26x2系列MCU作为SimpleLink™平台下专为低功耗无线应用设计的明星产品其内置的AUX_TIMER模块具体分为AUX_TIMER01和AUX_TIMER2功能之强大、设计之精巧常常让初次接触的开发者感到既兴奋又困惑。兴奋在于它提供了远超基础定时器的能力困惑则源于其相对复杂的寄存器结构和灵活到令人眼花缭乱的配置选项。我接触过不少项目从简单的LED呼吸灯到复杂的无线协议栈中的精确时间同步都离不开对AUX_TIMER的深度调校。很多开发者习惯依赖SDK中的驱动库这固然能快速上手但一旦遇到库函数未覆盖的边角场景或者需要极致优化功耗和响应时间时直接操作寄存器就成了必须跨越的门槛。这份指南的目的就是帮你彻底打通这个关卡。我们将不满足于简单的“配置步骤”而是深入到每一个关键寄存器的位域结合实际的场景讲清楚“为什么要这么配”以及“配置错了会怎样”。无论是想用AUX_TIMER01实现一个超低功耗的周期性唤醒还是用AUX_TIMER2生成多路高精度的中心对齐PWM你都能在这里找到清晰的路径和必须注意的“坑”。简单来说AUX_TIMER模块的核心价值在于其极低的功耗和极高的灵活性。它属于AUX辅助域这意味着即使主CPUCM4处于睡眠状态它也能在Sensor Controller EngineSCE或事件链的驱动下独立工作这对于电池供电的物联网设备至关重要。其灵活性体现在时钟源可以是内部时钟也可以是几乎任何内部或外部的事件如GPIO边沿、ADC转换完成、RTC闹钟等工作模式涵盖单次、连续、上下计数更强大的是AUX_TIMER2它集成了4个完全独立的捕获/比较通道每个通道都能独立配置为输入捕获、输出比较或PWM生成并且支持“影子寄存器”Pipeline Capture Compare来实现无抖动jitter-free的PWM周期/占空比更新。2. AUX_TIMER01基础定时与事件计数AUX_TIMER01模块包含两个独立的16位定时器Timer 0和Timer 1。它们的结构相对简单但功能完备非常适合用于基础的定时、延时或作为简单的事件计数器。2.1 核心寄存器组与功能映射AUX_TIMER01的每个定时器都由四个核心寄存器控制构成了一个清晰的工作链条配置CFG - 控制CTL - 目标值TARGET - 计数器CNTR。寄存器缩写偏移地址名称核心功能简述TxCFG0h (T0), 10h (T1)定时器X配置设置时钟源、预分频器、工作模式时钟/事件计数、重载模式。TxCTL4h (T0), 14h (T1)定时器X控制只有一个关键位EN使能位。写1启动计数计数满后根据模式可能自动清零。TxTARGET8h (T0), 18h (T1)定时器X目标值设置计数器需要比较的目标值。这是定时周期的核心参数。TxCNTRCh (T0), 1Ch (T1)定时器X计数器只读寄存器实时反映当前计数值。用于读取进度或作为捕获值。这个结构非常直观你先通过CFG寄存器搭建好定时器的“骨架”用什么时钟、数多快然后通过TARGET寄存器设定它的“目标”数到多少算一次最后通过CTL寄存器的EN位“启动发令”。CNTR则像是一个跑道上的实时位置指示器。2.2 T0CFG/T1CFG定时器引擎的配置核心这是整个定时器的“大脑”。我们以T0CFG为例逐位解析T1CFG完全一致。位域13-8: TICK_SRC (时钟源选择)这是第一个关键决策点。它决定了定时器的“心跳”从哪里来。其值对应AUX事件总线上的64个事件源0x00 - 0x3F。这赋予了AUX_TIMER极大的灵活性。常见选择0x00 - 0x1F对应AUXIO0-AUXIO31即外部GPIO引脚上的事件。你可以配置定时器在某个GPIO的上升沿或下降沿计数实现基于外部信号的事件计数或频率测量。重要内部事件0x23 (AON_RTC_4KHZ): 来自Always-On域的32.768kHz时钟分频出的4kHz信号。这是实现超低功耗周期性唤醒的黄金选择因为AON域始终运行且功耗极低。0x26 (SCLK_LF): 低频时钟通常是32.768kHz。也是低功耗定时的好选择。0x2A (ACLK_REF): 高速时钟参考频率更高用于需要较短定时的场景。0x35/0x36: 另一个AUX_TIMER的事件输出可以实现定时器的级联。实操心得如果你需要定时器在深度睡眠下工作必须选择来自AON域或低频时钟域的事件源如AON_RTC_4KHZ或SCLK_LF。选择像ACLK_REF这类可能随主CPU关闭的时钟源在睡眠时定时器会停止工作。位域14: TICK_SRC_POL (时钟源极性)决定了在TICK_SRC信号的哪种边沿进行计数。0: 在上升沿计数。1: 在下降沿计数。 这个配置在与外部数字信号同步时非常重要。例如如果你要测量一个方波的高电平时间可以设置上升沿开始计数下降沿停止并捕获计数值。位域7-4: PRE (预分频器)这是第二个关键决策点用于进一步降低计数频率。分频系数 2^PRE。0x0: 1分频时钟源直接驱动计数器。0x1: 2分频。...0xF: 32768分频。计算公式定时器实际计数频率 TICK_SRC频率 / (2^PRE)。例如TICK_SRC选择4kHz (AON_RTC_4KHZ)PRE设置为0xF (32768分频)则实际计数频率为 4000 / 32768 ≈ 0.122 Hz即约8.2秒计数一次。这允许你实现非常长的定时周期。位域1: MODE (定时器模式)决定预分频器的驱动源。0: 使用时钟作为预分频器源。此时定时器的计数速率由AUX_SYSIF:PEROPRATE.TIMER01_OP_RATE设置的时钟频率和PRE分频共同决定。这是最常用的“普通定时器”模式。1: 使用TICK_SRC选择的事件作为预分频器源。此时PRE字段依然有效但计数的是事件边沿的个数。这实现了“事件计数器”模式比如每N个外部脉冲才产生一次中断。位域0: RELOAD (重载模式)决定计数器达到目标值后的行为。0(Manual Mode):手动模式。计数器达到或超过TARGET后停止且TxCTL.EN位自动清零。你需要手动重新使能才能开始下一次计数。适用于单次定时或需要精确控制每次启动的场景。1(Continuous Mode):连续模式。计数器达到(TARGET-1)后在下一个时钟周期复位到0并重新开始计数。适用于产生连续的周期性中断或PWM时基。注意事项在连续模式下中断或事件触发点有细微差别。根据手册当RELOAD1时AUX_TIMERx_EV事件在计数器值为0时产生除了使能定时器的第一个周期。这意味着中断服务程序ISR在周期开始时被调用而不是结束时。这在设计时间敏感的逻辑时需要留意。2.3 T0TARGET/T1TARGET目标值设定与边界情况这个16位的寄存器定义了定时的终点。但手册中关于目标值为0或1的说明容易让人困惑这里必须厘清手动模式 (RELOAD0)下如果VALUE 0定时器会计数到1后停止并触发事件。这意味着你无法设置一个“立即”触发的目标最小有效定时周期是1个计数周期。事件在计数器值 VALUE时触发。通常我们设置VALUEN计数器从0计数到N-1在第N个时钟周期触发即计数了N次。所以定时周期 (VALUE) * 计数时钟周期。例如VALUE1000则计数1000次后触发。连续模式 (RELOAD1)下计数器会计数到(VALUE - 1)然后归零。因此一个完整的周期是计数VALUE次。定时周期 (VALUE) * 计数时钟周期。特殊边界如果VALUE 2计数器值将保持为0且AUX_TIMERx_EV会在使能定时器一个时钟周期后拉高并保持。这通常不是期望的工作状态应避免设置VALUE为0或1。一个关键特性手册明确指出可以在定时器运行时Run-Time更新TARGET值。这在需要动态调整定时间隔的应用中非常有用但要注意在连续模式下更新时新的VALUE值会在当前周期结束后计数器归零时生效这可能导致当前周期长度异常。安全做法是在更新前暂停定时器更新后再恢复。2.4 基础定时器配置流程与示例假设我们需要用Timer 0实现一个1秒的周期性中断使用低频时钟SCLK_LF (32.768 kHz)并工作在连续模式。确定时钟和分频32.768 kHz的时钟周期约为30.5us。要得到1秒1000ms的周期需要计数 1000ms / 30.5us ≈ 32768次。这恰好是2^15。我们可以方案A: PRE0 (1分频)TARGET 32768 - 1 0x7FFF。方案B: PRE0xF (32768分频)TARGET 1 - 1 0。但根据上述连续模式下VALUE不能为0此方案不可行。方案C: PRE0xE (16384分频)TARGET 2 - 1 1。 显然方案A最直接分辨率也最高30.5us。我们采用方案A。配置寄存器// 步骤1: 配置Timer 0 (假设寄存器已映射到指针变量) // T0CFG: 选择SCLK_LF (0x26)作为时钟源上升沿预分频1时钟模式连续重载 // TICK_SRC 0x26, TICK_SRC_POL0, PRE0, MODE0, RELOAD1 // 位域: [31:15]保留 | [14]极性0 | [13:8]时钟源0x26 | [7:4]PRE0 | [3:2]保留 | [1]MODE0 | [0]RELOAD1 // 计算值: 0x26 8 0x2600, RELOAD位1所以是0x2601 AUX_TIMER01-T0CFG 0x2601; // 步骤2: 设置目标值 (32768) AUX_TIMER01-T0TARGET 32768; // 0x8000 // 步骤3: 可选配置AUX_EVCTL将AUX_TIMER0_EV事件连接到MCU的中断 // 这通常在AUX_EVCTL模块中配置将EVSTAT3.AUX_TIMER0_EV映射到MCU的NVIC中断。 // 步骤4: 使能定时器 AUX_TIMER01-T0CTL | 0x1; // 设置EN位为1这样Timer 0就会每1秒产生一次AUX_TIMER0_EV事件该事件可以触发中断或驱动其他外设。3. AUX_TIMER2高级PWM与捕获比较引擎如果说AUX_TIMER01是瑞士军刀中的小刀那么AUX_TIMER2就是一套完整的精密机床。它是一个16位定时器但配备了4个完全独立的通道CH0-CH3每个通道都可以配置为输入捕获或输出比较模式并拥有独立的事件输出EV0-EV3。这使得它特别适合生成多路PWM、测量脉冲宽度/频率或构建复杂的时序逻辑。3.1 全局控制与时钟设置在深入通道之前必须理解几个全局控制寄存器它们为整个AUX_TIMER2定下基调。CTL (控制寄存器)位域1-0: MODE这是定时器的基础工作模式。0h (DIS)禁用。所有操作停止。1h (UP_ONCE)单次向上计数。从0计数到TARGET值后停止并自动将MODE设回DIS。用于单次定时或触发单次操作。2h (UP_PER)周期向上计数。从0计数到TARGET值然后归零重复。这是生成边沿对齐PWM的标准模式。3h (UPDWN_PER)周期向上-向下计数。从0计数到TARGET再递减回0如此反复。这是生成中心对齐PWM或称对称PWM的模式可以有效减少谐波噪声。位域2: TARGET_EN选择计数器比较的目标值。0固定使用65535 (0xFFFF) 作为目标值。此模式下定时器周期固定为最大。1使用TARGET.VALUE寄存器中的值作为目标值。这是最常用的模式允许灵活设置周期。位域6-3: CHx_RESET分别用于复位通道x的配置和捕获比较寄存器。写1可将对应通道的CHxCC, CHxPCC, CHxEVCFG, CHxCCFG寄存器复位。这是一个便捷的通道初始化方式。PRECFG (预分频配置寄存器)位域7-0: CLKDIV时钟分频系数。定时器时钟频率 源时钟频率 / (CLKDIV 1)。源时钟由AUX_SYSIF:TIMER2CLKCTL.SRC选择需额外配置。CLKDIV范围0-255因此分频比是1到256。这提供了比AUX_TIMER01更精细的分频能力。TARGET 与 SHDWTARGET (目标值与影子目标值)TARGET.VALUE当前周期使用的目标值。SHDWTARGET.VALUE影子目标值。这是一个关键的高级功能。当CNTR.VALUE归零时硬件会自动将SHDWTARGET.VALUE的值载入TARGET.VALUE。这实现了在PWM周期边界无毛刺地更新周期。如果你需要动态改变PWM频率必须在当前周期结束前更新SHDWTARGET而不是直接写TARGET。3.2 通道配置精髓CCACT与事件生成每个通道的核心是CHxEVCFG寄存器其中的CCACTCapture-Compare Action字段定义了该通道的行为模式。这是AUX_TIMER2最强大也最复杂的地方。我们可以将其分为几大类1. 单次动作模式 (CCACT 0x1 ~ 0x7)这类模式在触发一次捕获或比较后会自动禁用本通道EVx_GEN位清零。适用于单次测量或触发。SET_ON_CAPT_DIS (0x1)在捕获事件外部信号边沿发生时设置使能的事件输出并将当前计数器值存入CHxCC然后禁用通道。CLEAR_ON_ZERO_TOGGLE_ON_CMP_DIS (0x2)和SET_ON_ZERO_TOGGLE_ON_CMP_DIS (0x3)这两个模式用于生成单脉冲。它们在计数器为0时清除/设置事件在计数值等于CHxCC时翻转事件然后禁用。可以产生一个从周期开始、宽度由CHxCC决定的脉冲。2. 连续动作模式 (CCACT 0x9 ~ 0xF)这类模式会持续运行是生成PWM或持续响应的基础。SET_ON_CAPT (0x9)持续捕获。每次捕获事件都会更新CHxCC并设置事件。用于测量连续信号的周期或频率。CLEAR_ON_ZERO_TOGGLE_ON_CMP (0xA)和SET_ON_ZERO_TOGGLE_ON_CMP (0xB)这是生成PWM的黄金组合。SET_ON_ZERO_TOGGLE_ON_CMPUP_PER模式产生边沿对齐PWM。计数器从0开始向上计数。在0时刻设置事件例如PWM输出高电平当计数值等于CHxCC时翻转事件变为低电平。占空比 CHxCC / (TARGET 1)。当CHxCC TARGET时占空比为100%。CLEAR_ON_ZERO_TOGGLE_ON_CMPUPDWN_PER模式产生中心对齐PWM。计数器从0上数到TARGET再下数回0。在0时刻清除事件例如PWM输出低电平在上下计数过程中当计数值等于CHxCC时翻转事件。占空比 1 - (CHxCC / TARGET)。当CHxCC TARGET时占空比为0%。PULSE_ON_CMP (0xF)每次比较匹配时产生一个宽度为2个定时器时钟周期的脉冲。可用于生成精确的触发信号。3. 周期与脉宽测量模式 (CCACT 0x8)这是一个专用模式用于同时测量输入信号的周期和占空比。配置CHxCCFG.CAPT_SRC选择输入信号EDGE选择起始边沿如上升沿。使能此模式后定时器会测量连续两个同向边沿之间的时间作为周期存入CHxCC测量第一个边沿到下一个反向边沿的时间作为脉宽存入CHxPCC。测量完成后会设置使能的事件如产生中断通知CPU读取CHxCC和CHxPCC即可得到周期和脉宽值。重要限制输入信号的周期和脉宽必须大于(1 CLKDIV) * 定时器时钟周期且周期不能超过65535个计数。这决定了可测量的最小频率和最小脉宽。3.3 生成无抖动PWM的实战配置假设我们需要用AUX_TIMER2的CH0生成一路频率1kHz、占空比50%的边沿对齐PWM并且要求占空比可以平滑无抖动地调整。系统时钟与分频计算假设AUX_SYSIF:TIMER2CLKCTL.SRC选择为48MHz的系统时钟。期望PWM频率为1kHz即周期T1ms。计数器一个周期需要计数的次数 N T * Fclk。若直接计数N1ms * 48MHz 48000超过16位计数器最大值65535。因此需要分频。选择分频系数CLKDIV。尝试CLKDIV5则分频后时钟Ftimer 48MHz / (51) 8MHz。此时一个计数周期为125ns。1ms需要的计数值 N 1ms / 125ns 8000。这小于65535可行。同时占空比分辨率 125ns对于1kHz PWM来说足够精细。目标值 TARGET N - 1 7999 (因为从0开始计数到7999共8000次)。初始占空比50%则比较值 CH0CC 50% * 8000 4000。寄存器配置步骤// 步骤1: 配置全局时钟和模式 (必须先于通道配置) // 停止定时器 AUX_TIMER2-CTL 0x0; // MODE DIS // 设置预分频 (CLKDIV5) AUX_TIMER2-PRECFG 5; // CLKDIV 5 // 设置目标值 (周期) AUX_TIMER2-TARGET 7999; // 对应1ms周期 // 步骤2: 配置通道0为PWM输出模式 // 首先复位通道0以确保干净状态 AUX_TIMER2-CTL | (1 3); // 设置CH0_RESET位 // 等待复位完成通常需要几个时钟周期或直接写入配置覆盖 AUX_TIMER2-CTL ~(1 3); // 清除CH0_RESET位 // 配置通道0事件输出假设使用EV0作为PWM输出 // EV0_GEN 1 (使能通道控制EV0)CCACT 0xB (SET_ON_ZERO_TOGGLE_ON_CMP) AUX_TIMER2-CH0EVCFG (1 4) | (0xB); // EV0_GEN1, CCACT0xB // 设置初始比较值占空比 AUX_TIMER2-CH0CC 4000; // 50%占空比 // 步骤3: 启动定时器 // 设置模式为周期向上计数(UP_PER)并启用TARGET寄存器 AUX_TIMER2-CTL | (0x2 0) | (1 2); // MODEUP_PER (0x2), TARGET_EN1此时AUX_TIMER2_EV0事件就会输出一个1kHz、50%占空比的PWM波形。你可以通过AUX_EVCTL模块将这个事件路由到具体的GPIO引脚上。动态更新占空比无抖动 要改变占空比绝不能直接写入CH0CC因为如果写入时机不当可能会在一个PWM周期中间改变比较值导致产生一个极窄或极宽的脉冲即抖动。 正确的方法是使用影子寄存器CH0PCC。// 假设要更新占空比为75% uint16_t new_duty_cycle_value (uint16_t)(0.75 * 8000); // 6000 // 将新值写入管道比较寄存器影子寄存器 AUX_TIMER2-CH0PCC new_duty_cycle_value;硬件会在下一个计数器归零的周期开始时自动将CH0PCC的值加载到CH0CC中从而实现在周期边界同步切换完全消除抖动。更新周期值频率同理应写入SHDWTARGET寄存器。4. 输入捕获与脉冲测量实战AUX_TIMER2的捕获功能同样强大。我们以测量一个未知方波的频率和占空比为例使用CCACT0x8模式。硬件连接与规划待测信号连接到CC13x2/CC26x2的一个AUXIO引脚例如AUXIO0。使用AUX_TIMER2的CH0进行测量。将AUX_EVCTL:EVSTAT0.AUXIO0事件映射为CH0的捕获源。配置步骤// 步骤1: 停止定时器并复位通道 AUX_TIMER2-CTL 0x0; AUX_TIMER2-CTL | (1 3); // CH0_RESET // ... 短暂延时或确保操作完成 AUX_TIMER2-CTL ~(1 3); // 步骤2: 配置捕获源和边沿 // CAPT_SRC 0x00 (AUXIO0), EDGE 0x1 (上升沿捕获) AUX_TIMER2-CH0CCFG (0x00 1) | (0x1); // CAPT_SRC0, EDGE1 // 步骤3: 配置通道为周期脉宽测量模式并启用事件中断例如EV0 // CCACT 0x8 (PER_PULSE_WIDTH_MEAS), EV0_GEN 1 AUX_TIMER2-CH0EVCFG (1 4) | (0x8); // 步骤4: 配置定时器全局参数并启动 // 选择足够快的定时器时钟以测量预期频率。假设用48MHzCLKDIV0。 AUX_TIMER2-PRECFG 0; // 设置一个足够大的目标值作为超时。假设测量信号频率10Hz周期100ms。 // 100ms 48MHz 计数 4.8e6超过65535。需要分频。 // 设置CLKDIV47则定时器时钟1MHz计数周期1us。 // 100ms需要计数100,000仍然超限。我们需要接受一个更短的超时时间或者使用多次测量。 // 设为65ms超时TARGET 65000。 AUX_TIMER2-TARGET 65000; AUX_TIMER2-CTL | (0x2 0) | (1 2); // UP_PER模式启动 // 步骤5: 在中断服务程序或主循环中处理数据 // 当测量完成一个周期脉宽后CH0EVCFG.EV0_GEN位会置起关联的事件。 // 我们需要在事件对应的中断服务函数中 // 1. 读取CH0CC (周期值) 和 CH0PCC (脉宽值)。 // 2. 根据定时器实际时钟计算真实时间。 // 3. 清除事件标志通过EVCTL寄存器或读取CH0EVCFG。计算示例假设定时器时钟为1MHz (CLKDIV47)读取到CH0CC 5000CH0PCC 2000。信号周期 5000 * 1us 5ms - 频率 200 Hz。高电平脉宽 2000 * 1us 2ms - 占空比 2ms / 5ms 40%。5. 常见问题排查与调试技巧即使理解了所有寄存器实际调试中还是会遇到各种问题。以下是我总结的几个典型“坑”和解决方法问题1定时器无法启动或无法产生中断/事件。检查时钟源确认TICK_SRC或AUX_SYSIF:TIMER2CLKCTL.SRC选择的时钟在当前电源模式下是有效的。深度睡眠下只有AON域和LF时钟可用。检查AUX域电源和时钟AUX_TIMER属于AUX域需要确保AUX域已上电且时钟已使能。通常调用Power_setDependency(PowerCC26XX_PERIPH_AUX)和相关时钟初始化函数。检查事件路由AUX_TIMER产生的是事件EVENT需要配置AUX_EVCTL模块将AUX_TIMERx_EVy事件映射到MCU的NVIC中断线或者映射到IO、ADC等其他外设的触发源。光配置定时器本身不配置事件路由是无法触发中断的。验证寄存器写入在调试初期建议在配置后读取关键寄存器如CTL、CFG确认写入的值是否正确。有些寄存器可能需要在定时器禁用时才能配置。问题2PWM输出有毛刺或抖动。未使用影子寄存器这是最常见的原因。在PWM周期中间更新了CHxCC或TARGET寄存器。务必使用CHxPCC和SHDWTARGET来更新。比较值超出范围在边沿对齐模式下如果CHxCC值大于TARGET占空比会变成100%但若从一个大值突然改到小值可能会产生异常脉冲。确保占空比变化平滑。时钟不稳定如果定时器时钟源本身有抖动如由锁相环PLL提供且未稳定PWM输出自然会有抖动。对于高精度PWM应选择稳定的时钟源如高频RC振荡器或晶体时钟。问题3输入捕获值不准或混乱。未处理边沿检测电路的“旧数据”手册在CHxEVCFG描述中特别警告了“False capture events”。当从DIS模式切换到其他模式或重新配置CAPT_SRC时内部的边沿检测电路可能存有旧的信号状态导致一使能就立即误触发一次捕获。解决方案严格遵循手册的“三步法”1) 先设置CCACT为捕获模式但不使能事件输出EVx_GEN0。2) 配置CHxCCFG。3) 等待至少3个定时器时钟周期。4) 再使能事件输出或进行后续操作。对于SET_ON_CAPT_DIS模式步骤类似。信号频率超出范围对于周期/脉宽测量模式CCACT0x8输入信号的周期和最小脉宽必须满足手册给出的最小值要求大于2*(1CLKDIV)*定时器时钟周期。如果信号过快测量会出错。未考虑中断延迟在高速连续捕获时如果CPU中断处理太慢可能会丢失捕获事件。对于高频信号应考虑使用DMA将捕获值直接传输到内存或者使用双缓冲机制。问题4低功耗模式下定时器不工作。时钟源选择错误这是首要原因。确认在目标低功耗模式如Standby下你所选的TICK_SRC对应的时钟源仍然运行。AUX域未保持供电在某些深度睡眠模式AUX域可能被关闭。查阅芯片数据手册的电源架构图确认在目标功耗模式下AUX域的状态。通常需要配置电源管理模块以保持AUX域供电。事件唤醒链未配置如果你希望定时器事件将MCU从睡眠中唤醒除了配置定时器本身和事件路由还需要配置AON事件控制器和MCU的唤醒源形成一个完整的事件唤醒链。调试建议从简单开始先用AUX_TIMER01做一个简单的LED闪烁确认基本的时钟、配置、中断路由是正确的。善用读取计数器在调试定时周期时可以在中断里读取TxCNTR或CNTR的值看看它是否按预期从0计数到TARGET。逻辑分析仪是利器用逻辑分析仪抓取AUXIO引脚上的PWM输出或者测量输入捕获信号的波形可以直观地验证定时器行为测量实际频率、占空比发现毛刺。参考官方SDKTI的SimpleLink SDK提供了AUX_TIMER的驱动实现通常在driverlib/目录下。当你对自己的寄存器操作不确定时去阅读SDK中AUXTimerConfigure()、AUXTimerStart()等函数的源码是极好的学习方式但要注意SDK可能为了通用性牺牲了一些灵活性你的直接寄存器操作可能更高效。