

以下依据 configuration_rtduino.xml 里两段模块配置,对 g_timer2 与 g_timer6 做结构化说明(数据以当前磁盘文件为准)。
共性:驱动与硬件单元
两者都属于 Renesas FSP 的 General PWM Timer 驱动(r_gpt) ,挂在同一 GPT 全局配置 下:参数检查随 BSP、支持引脚输出、写保护关闭,GPT 内核时钟为 PCLK (见 config.driver.gpt)。在代码里一般通过 g_timer2 / g_timer6 控制块配合 R_GPT_* API 使用(具体类型名以 FSP 生成代码为准)。
g_timer2(GPT 通道 2)
在 XML 中的位置: module.driver.timer_on_gpt.1304889876。
基本定时参数
| 属性 | 值 | 说明 |
|---|---|---|
| 名称 | g_timer2 |
实例名,与生成符号一致 |
| 通道 | 2 | 硬件 GPT2 |
| 模式 | PWM | 用于脉宽调制波形 |
| 周期 | 0x100000000 |
单位为 Raw counts,由 FSP 换算为寄存器装载值 |
| 占空比 | 50% | 仅在 PWM 下生效 |
对应片段:
317:336:D:\code\rt-thread\5.2.2_260513\5.2.2\bsp\renesas\ra6m3-hmi-board\rt-studio-project\configuration_rtduino.xml
<module id="module.driver.timer_on_gpt.1304889876">
<property id="module.driver.timer.name" value="g_timer2"/>
<property id="module.driver.timer.channel" value="2"/>
<property id="module.driver.timer.mode" value="module.driver.timer.mode.mode_pwm"/>
<property id="module.driver.timer.period" value="0x100000000"/>
<property id="module.driver.timer.unit" value="module.driver.timer.unit.unit_period_raw_counts"/>
...
<property id="module.driver.timer.duty_cycle" value="50"/>
<property id="module.driver.timer.gtioca_output_enabled" value="module.driver.timer.gtioca_output_enabled.false"/>
...
<property id="module.driver.timer.gtiocb_output_enabled" value="module.driver.timer.gtiocb_output_enabled.true"/>
引脚与输出使能
- GTIOCA: 输出 关闭(不在此脚出 GPT 波形);停止电平配置为低(对"未使用的一路"仍保留默认安全电平)。
- GTIOCB: 输出 开启 ,停止电平 低。
- 引脚配置(Pin 表): GPT2 的 GTIOCB → P712 ;GPT2 模式为
gtiocaorgtiocb.free(与"单路或另一路空闲"类复用一致)。
因此 g_timer2 的 PWM 实际只从 P712(GTIOCB)引出;GTIOCA 不参与输出。
波形与 GTIOR
- Custom waveform: 关闭。
- GTIOR: A/B 两路初始为低;周期结束与比较匹配时多为 retain(保持);计数停止时不做 retain。这是 FSP 对 GTIO 行为的基础设定,与 PWM 边沿一起由硬件解释。
输入 / 事件 / 安全
- Count up/down、start/stop/clear、capture A/B 源: 均为空,表示未接 ELC/外部硬件事件链。
- 输入滤波: A/B 均为 none。
- POEG: 链接到 POEG0(过流关断等若启用会与此组关联;当前未展开其它关断源)。
- 死区、ADC 触发、ADC 比较匹配: 均为 0 或未配置。
- Interrupt skip: 关闭。
中断与回调
- 回调:
NULL。 - Overflow/Crest、Capture A/B、Underflow/Trough: 优先级均为
_disabled。
含义:没有周期到点中断,应用不能靠该定时器中断做调度,除非后来在 FSP 里打开中断并注册回调;或在上层用别的定时源。
g_timer6(GPT 通道 6)
在 XML 中的位置: module.driver.timer_on_gpt.1221002445。
基本定时参数
| 属性 | 值 | 说明 |
|---|---|---|
| 名称 | g_timer6 |
实例名 |
| 通道 | 6 | 硬件 GPT6 |
| 模式 | Periodic | 周期定时/计数模式,不是以占空比为主参数的 PWM 应用方式 |
| 周期 | 78 | 单位为 Kilohertz ,即 FSP 按时钟换算成约 78 kHz 的周期频率 |
| 占空比 | 50(XML 仍有该字段) | Periodic 下 通常不按 PWM 占空比使用;界面也会提示仅 PWM 适用,可视为未参与周期定时的残留显示值 |
461:480:D:\code\rt-thread\5.2.2_260513\5.2.2\bsp\renesas\ra6m3-hmi-board\rt-studio-project\configuration_rtduino.xml
<module id="module.driver.timer_on_gpt.1221002445">
<property id="module.driver.timer.name" value="g_timer6"/>
<property id="module.driver.timer.channel" value="6"/>
<property id="module.driver.timer.mode" value="module.driver.timer.mode.mode_periodic"/>
<property id="module.driver.timer.period" value="78"/>
<property id="module.driver.timer.unit" value="module.driver.timer.unit.unit_frequency_khz"/>
...
<property id="module.driver.timer.duty_cycle" value="50"/>
<property id="module.driver.timer.gtioca_output_enabled" value="module.driver.timer.gtioca_output_enabled.true"/>
...
<property id="module.driver.timer.gtiocb_output_enabled" value="module.driver.timer.gtiocb_output_enabled.true"/>
引脚与输出使能
- GTIOCA / GTIOCB: 两路输出 均开启 ,停止电平均为 低。
- 引脚配置: GTIOCA → P702 ,GTIOCB → P703 ;GPT6 模式为
gtiocaandgtiocb.free(A、B 两路相关复用模式与双路输出一致)。
因此 g_timer6 在 Periodic 下仍可在 P702、P703 上产生与周期相关的 GTIO 行为(具体波形形状由 Periodic + GTIOR 决定,与 PWM 的"固定占空比方波"语义不同)。
波形与 GTIOR
与 g_timer2 同类:Custom waveform 关;A/B 初始低、周期末/比较匹配多为 retain、停止时不 retain。Periodic 更强调"周期长度",两路 GTIO 可同时参与硬件定义的翻转逻辑。
输入 / 事件 / 安全
与 g_timer2 相同一类默认值:无 ELC 源、无滤波、POEG0、死区/ADC 相关为 0 或未配、interrupt skip 关。
中断与回调
与 g_timer2 相同:无回调、无各通道定时器中断。
含义:若需要 78 kHz 的软件节拍 ,当前配置不能 依赖溢出中断,需改 FSP 打开 crest/overflow 中断,或改用 SysTick/其它定时器;若仅需要 P702/P703 上的周期波形,则依赖硬件自动行为即可(仍建议对照 RA 手册中 Periodic 下 GTIO 的时序图确认是否符合板级需求)。
两者对照小结
| 对比项 | g_timer2 |
g_timer6 |
|---|---|---|
| 硬件通道 | GPT 2 | GPT 6 |
| 模式 | PWM | Periodic |
| 周期表达方式 | Raw counts,0x100000000 |
78 kHz(由 FSP 换算) |
| 占空比 | 50%,有效 | 字段为 50,Periodic 下通常无效 |
| GTIOCA | 关 | 开 → P702 |
| GTIOCB | 开 → P712 | 开 → P703 |
| 引脚模式(Pin 表) | gpt2 单路 B 等 |
gpt6 A+B 双路 |
| 中断 | 全关 | 全关 |
在工程里怎么理解用途(推断)
g_timer2: 典型 单引脚 PWM (如电机、背光、蜂鸣器方波等),当前为 50% 占空比 ;精确频率需结合 PCLK 与 FSP 对0x100000000的换算 核对,若要固定某 Hz,建议在 FSP 改为 kHz/µs 或明确 raw 值后重新生成。g_timer6: 典型 固定频率周期基准 (约 78 kHz ),双引脚 可做同步方波或互补时序(仍须对照手册与 GTIOR);无中断 时更适合"纯硬件波形"或与其它外设联动,不适合当前配置下的"每周期进一次 ISR"。
若你接下来要对接 RT-Thread / RTduino 的 analogWrite 或 tone ,通常会更关心 g_timer2 的 PWM 频率与 P712 ;g_timer6 则需确认板卡原理图上 P702/P703 实际接到了什么负载再决定是否改模式或关某一路输出。
如需把 0x100000000 在你当前 BSP 时钟下换算成具体 Hz ,可以说一下 PCLKD/PCLKB 与 GPT 时钟源 (或贴 clock/bsp 里相关配置),我可以按文档公式帮你推一版数字。