国外做外汇网站交流,公司网站制作合同,seo怎么做新手入门,网站建设注意问题目录
GPT核心特性
GPT 计数器操作模式 重启模式
自由运行模式
GPT时钟源 GPT框图
输入捕获#xff1a;测量外部信号的高电平脉冲宽度
输出比较#xff1a;生成 1kHz PWM 波
GPT模块外部引脚复用与功能映射表
GPT使用注意事项
GPT Memory Map
GPT寄存器
GPTx_CR寄存…
目录
GPT核心特性
GPT 计数器操作模式 重启模式
自由运行模式
GPT时钟源 GPT框图
输入捕获测量外部信号的高电平脉冲宽度
输出比较生成 1kHz PWM 波
GPT模块外部引脚复用与功能映射表
GPT使用注意事项
GPT Memory Map
GPT寄存器
GPTx_CR寄存器
GPTx_PR寄存器
GPTx_SR寄存器
GPTx_IR寄存器
GPTx_OCR1寄存器
GPTx_ICR1寄存器
GPTx_CNT寄存器 前言 通用定时器GPT是一种功能强大的硬件模块内置一个32位递增计数器用于记录时钟脉冲的数量为定时和计数操作提供核心支持 GPT具备输入捕获能力能够检测外部引脚的电平变化如上升沿、下降沿或双边沿并在触发时将当前的计数器值自动保存到专用寄存器中方便后续读取或处理 GPT支持输出比较功能用户可以预先设定一个目标数值当计数器达到该值时硬件会自动在指定引脚上产生信号例如电平翻转可用于生成PWM波形或控制外部设备此外这一机制还会触发中断让软件在中断服务中执行定时任务比如周期性数据采集或系统调度 GPT核心特性 一个具备时钟源选择功能的 32 位向上计数器计数范围为0 ~ 2³²-1当时钟源选择内部高速时钟可用于高精度定时若选则低速时钟32KHz RTC 时钟则用于低功耗场景两个输入捕获通道每个通道相互独立每个输入捕获通道对应一个外部引脚可监测引脚的电平跳变上升沿 / 下降沿 / 双边沿 当引脚出现指定边沿时立即将当前计数器值自动保存到到捕获寄存器可以用于测量脉冲宽度捕获上升沿记录t1捕获下降沿记录t2脉宽 t2-t1与测量信号周期连续捕获两个上升沿周期 t2-t1三个输出比较通道每个通道相互独立每个通道预设一个比较值当计数器递增到该值时触发硬件动作常见输出模式为电平翻转匹配时引脚电平翻转一次用于生成单次脉冲与 持续 PWM周期由计数器溢出周期决定占空比由比较值与周期的比值决定可配置为在低功耗模式和调试模式下保持工作状态在捕获事件、比较事件和计数器溢出事件发生时可生成中断计数器操作支持重启模式或自由运行模式 GPT 计数器操作模式 重启模式 当通过 GPT 控制寄存器 GPT_CR 配置为重启模式在重启模式下对于输出比较通道1当计数器达到比较值时 → 计数器会重置并从 0x00000000 重新开始计数 对于输出比较通道2与输出比较通道3计数器达到其比较值 → 计数器不会重置继续向上累加 由于通道 1 的比较事件会强制重置计数器如果通道 2与通道 3 的比较值 通道 1 的比较值 → 计数器会在达到通道 2与通道3 的比较值 之前先触发通道 1 的比较事件 → 计数器被重置为 0 → 通道 2/3 的比较事件永远不会触发 注意事项当对通道 1 的比较寄存器执行任何写操作时都会重置 GPT 计数器 假设计数器正在运行此时修改通道 1 的比较值 若原比较值 C_old 较大如 0x1000新值 C_new 较小如 0x0800且计数器已超过 C_new当前计数值 CNT C_new→ 若不强制重置C_new 永远不会触发比较事件因为计数器只会继续递增到 0xffffffff强制重置后计数器从 0 开始新的 C_new 会在下次计数到 C_new 时触发事件 → 确保修改比较值后新的定时逻辑能立即生效避免逻辑漏洞 应用场景通道 1 控制基础周期通道 2与通道3 实现周期内的子事件 通道 1 设定 大周期1ms让计数器每 1ms 重启 → 实现固定周期的主任务数据上传任务通道 2与通道3 设定 大周期内的子时间点0.3ms、0.7ms→ 触发周期内的细分任务多阶段传感器采集数据、多阶段传感器数据处理 自由运行模式 当通过 GPT 控制寄存器 GPT_CR 配置为自由模式在自由运行模式下当所有 3 个比较通道发生比较事件时计数器都不会重置计数器会继续递增计数直到达到 0xFFFFFFFF然后回绕溢出 到 0x00000000 重新开始 当计数器与通道的比较值相等时触发该通道的比较事件三个比较通道通道 1/2/3共用一个32 位向上计数器但是三个比较通道可设置不同的比较值在同一个时间轴上独立触发事件 应用场景多事件并行调度示例如下 通道 1 比较值 T1 (T11000) → 触发传感器采集任务通道 2 比较值 T2 (T23000) → 触发检查硬件状态任务通道 3 比较值 T3 (T35000) → 触发系统校准任务 GPT时钟源 Crystal Oscillator系统基准时钟典型频率为24MHzExternal Clock外部时钟无固定频率可灵活配置Peripheral Clock系统外设总线时钟典型频率为66MHzLow Frequency Reference Clock: 低频参考时钟用于低功耗模式、RTC 实时时钟典型频率为32.768KHz High Frequency Reference Clock系统的高频基准时钟 GPT框图 Timer Counter 32-bit32 位向上计数器GPT_CAPTURE1输入捕获引脚用于检测外部信号的边沿上升沿 / 下降沿IM1 (Input Mode/Mask)输入模式控制配置捕获的边沿类型上升沿、下降沿、双边沿或使能 / 屏蔽捕获IF1 (Input Flag)输入捕获标志当检测到指定边沿时置位触发将计数器值保存到输入寄存器的机制IF1IE (Input Capture Interrupt Enable)输入捕获中断使能位置 1 时捕获事件触发处理器中断Timer Input Reg 1 (32-bit)输入捕获寄存器存储捕获时刻的计数器值 Counter Value BUS用于实时传输当前计数器的计数值一段连接 32 位定时器计数器另一端连接 输入捕获寄存器和 输出比较比较器ROV (Roll-Over)计数器溢出标志当 Timer Counter 从 0xFFFFFFFF 回绕到 0 时置位ROVIE (Roll-Over Interrupt Enable)溢出中断使能位置 1 时溢出事件触发处理器中断FRR (Free-Run Restart)自由运行模式下的重启控制决定计数器是否重置Timer Output Reg1 (32-bit)输出比较寄存器存储预设的比较值cmp (Comparator)比较器持续对比 Timer Counter 值与 Timer Output Reg 值匹配时触发事件OF1 (Output Flag)输出比较标志比较匹配时置位触发引脚动作或中断OF1IE (Output Compare Interrupt Enable)输出比较中断使能位置 1 时比较事件触发处理器中断OM1 (Output Mode)输出模式控制决定比较匹配时 GPT_COMPARE1 引脚的动作如电平翻转、置高、置低等GPT_COMPARE1 输出比较通道引脚 输入捕获测量外部信号的高电平脉冲宽度 需求测量 GPT_CAPTURE1 引脚上的高电平脉冲宽度系统时钟经预分频后为 1MHz计数器每 1μs 加 1 一 配置阶段 选择时钟源为 ipg_clk66MHz设置预分频系数为 6666MHz / 66 1MHz计数器每1μs 递增 1配置 IM1由于需要测量高电平脉冲宽度即上升沿开始、下降沿结束因此选择上升沿和下降沿捕获置位 IF1IE使能输入捕获中断捕获事件触发中断处理 二 捕获上升沿记录起始时间 外部信号在 GPT_CAPTURE1 引脚产生上升沿sync 同步后IM1 触发 IF1Timer Input Reg 1 锁存当前计数器值假设为 T1 1000若 IF1IE 使能触发中断软件记录 T1起始时间 三 捕获下降沿记录结束时间 外部信号在 GPT_CAPTURE1 引脚产生下降沿sync 同步后IM1 再次触发 IF1Timer Input Reg 1 锁存当前计数器值假设为 T2 1500触发中断软件计算脉冲宽度T2 - T1 500计数→ 对应时间 500μs因 1 计数 1μs 输出比较生成 1kHz PWM 波 需求在 GPT_COMPARE1 引脚生成 1kHz、占空比 50% 的 PWM 波 分析: 假设计数器时钟 1MHz周期 1μs则 PWM 周期需 1000μs1kHz占空比 50% 即高电平 500μs、低电平 500μs那么输出比较寄存器的初始值设置为500 一 配置阶段 选择时钟源为 ipg_clk66MHz设置预分频系数为 66配置 OM1比较匹配时GPT_CAPTURE1 引脚电平翻转初始化输出比较寄存器 Timer Output Reg1) 为 500置位 OF1IE使能输出比较中断用于更新下一次比较值 二 第一次比较匹配上升沿 计数器从 0 开始计数达到 500 时cmp 比较匹配OF1 置位OM1 控制 GPT_COMPARE1 引脚电平翻转假设初始为低电平 → 高电平若 OF1IE 使能触发中断软件更新 Timer Output Reg1 为 1000 三 第二次比较匹配下降沿 计数器继续计数到 1000cmp 再次匹配OF1 置位。OM1 控制引脚电平翻转高电平 → 低电平。中断中更新 Timer Output Reg1 为 1500下一个周期的高电平结束点 四 循环生成 PWM 每次比较匹配时翻转电平并更新下一次比较值持续循环 → 生成稳定的 1kHz、50% 占空比 PWM 波 GPT模块外部引脚复用与功能映射表 时钟引脚选取首先检查检查是否需要以太网ENET1或 UART1 功能若以太网和 UART1 都不用任选若其中一个需启用选另一个闲置的然后将选取的引脚复用为GPT 时钟引脚 输入捕获引脚GPT1_CAPTURE1选取优先选取GPIO1_IO00由于GPIO1_IO00 是独立 GPIO复用为捕获功能时不影响其他外设 输出比较引脚GPT1_COMPARE1选取优先选取GPIO1_IO01由于GPIO1_IO01 是独立 GPIO复用为比较功能时不影响其他外设 GPT使用注意事项 若 GPT 定时器被禁用EN0 则 计数器Main Counter 和 预分频器Prescaler Counter 会冻结当前计数值停止递增保持最后一次计数结果此时ENMOD 位 决定当 EN 位重新置 1GPT 再次使能时计数器如何恢复计数 若 ENMOD1重置模式当 GPT 重新使能EN1时主计数器和预分频计数器会被强制重置为 0从头开始计数若 ENMOD0续传模式当 GPT 重新使能EN1时主计数器和预分频计数器会从冻结的计数值继续递增 硬件复位会将所有 GPT 寄存器重置为各自的默认复位值除输出比较寄存器OCR1、OCR2、OCR3 会被置为0xFFFFFFFF外其余寄存器均恢复默认而输入捕获寄存器复位值会被重置为 0x00000000 GPT Memory Map GPT寄存器
GPTx_CR寄存器 bit[0]: EN位定时器使能位若配置为1表示启用 GPT 计数器开始计数若配置为0表示禁用计数器冻结当前计数值 bit[1]: ENMOD位使能模式位决定禁用后重新使能时的行为若配置为1表示重新使能时计数器重置为 0若配置为0表示重新使能时计数器从冻结值继续递增计数 bit[8:6]: CLKSRC位时钟源选择位用于配置 GPT 计数器的时钟来源若配置为000表示无时钟输入配置为001表示时钟源为ipg_clk配置为010表示时钟源为ipg_clk_highfreq配置为011表示时钟源为External Clock配置为100表示时钟源为ipg_clk_32k配置为101表示时钟源为ipg_clk_24M bit[9]: FRR位自由运行 / 重启模式选择位若配置为1表示自由运行模式若配置为0表示重启模式 bit[10]: EN_24M位24MHz 时钟使能 bit[15]: SWR位软件复位控制位写 1 复位 GPT 定时器复位后自动清0 bit[17:16]: IM1位输入捕获通道1模式控制位用于配置 GPT_CAPTURE1 引脚的哪种跳变方式会触发保存计数器值的动作若配置为00表示禁用捕获若配置为01表示仅上升沿触发若配置为10表示仅下降沿触发若配置为11表示双边沿触发 bit[22:20]: OM1位输出比较通道 1 的模式控制位用于配置比较匹配时 GPT_COMPARE1引脚的具体动作若配置为000表示输出断开即比较事件不影响引脚若配置为001表示翻转输出即比较事件发生时引脚电平翻转若配置为010表示清除输出即比较事件发生时引脚电平配置低电平若配置为011表示置位输出即比较事件发生时引脚电平配置高电平 bit[29]: FO1位强制输出比较位其作用为手动触发输出比较动作若配置为1时立即执行 OMn 配置的输出动作但不置位状态寄存器GPTX_SR比较事件标志位OFn)写1后自动清除 GPTx_PR寄存器 bit[31:16]: 保留位 bit[15:12]: PRESCALER24M位当且仅当 时钟源CLK_SRC选择 24M 晶体时钟 时生效对 24MHz 输入时钟分频 bit[11:0]: PRESCALER位用于对 CLK_SRC 选择的任意时钟源 分频决定最终输入计数器的时钟频率其中分频系数 PRESCALER 值 1如PRESCALER 0x001则分频系数为 2 GPTx_SR寄存器 bit[0]: OF1位输出比较通道 1 标志位当计数器值匹配 GPT_COMPARE1 的比较值时置 1 bit[3]: IF1位输入捕获通道 1 标志位当 GPT_CAPTURE1 引脚检测到配置的边沿跳变时置 1 bit[5]: ROV位计数器溢出标志位无论计数器处于重启模式还是自由运行模式只有计数器真正达到 0xFFFFFFFF 时ROV位置 1当 32 位计数器从 0xFFFFFFFF 回绕到 0 时置 1 GPTx_IR寄存器 bit [0]: OF1IE位输出比较通道 1 中断使能0表示禁用通道 1 的比较中断OF1 标志置位不触发中断1表示启用通道 1 的比较中断OF1 标志置位时触发中断 bit [3]: IF1IE位输入捕获通道 1 中断使能0 表示禁用通道 1 的捕获中断IF1 标志置位不触发中断 1表示启用通道 1 的捕获中断IF1 标志置位时触发中断 bit [5]: ROVIE位计数器溢出中断使能 0表示禁用溢出中断即使 ROV 标志置位也不触发中断 1表示启用溢出中断ROV 标志置位时触发中断 GPTx_OCR1寄存器 输出比较寄存器 1用于存储 输出比较通道 1Output Compare Channel 1的预设比较值 当 GPT 的 32 位计数器GPT_CNT递增到该值时会触发 输出比较事件 GPTx_ICR1寄存器 GPTx_ICR1 为只读寄存器专门用于保存 输入捕获通道 1Input Capture Channel 1最后一次捕获事件发生时的计数器值 GPTx_CNT寄存器 GPT 模块的计数器寄存器GPTx_CNT 用于 存储 GPT 模块 32 位计数器的当前值读操作实时反映计数器当前值不影响计数流程写操作会强制修改计数器值并且打断当前计数流程