论坛类网站设计教师网络培训和服务平台

张小明 2026/1/14 5:07:13
论坛类网站设计,教师网络培训和服务平台,wordpress ping_status,网站优化的图片以下是对注释对应的 高电平时间计算逻辑 的详细解析表格及核心说明#xff0c;该逻辑适用于嵌入式定时器捕获模式#xff08;测量信号高电平持续时间#xff0c;兼容 XT 系列 / STM32 等 MCU#xff09;#xff0c;核心解决 “高电平跨定时器溢出” 的计算问题#xff1a…以下是对注释对应的高电平时间计算逻辑的详细解析表格及核心说明该逻辑适用于嵌入式定时器捕获模式测量信号高电平持续时间兼容 XT 系列 / STM32 等 MCU核心解决 “高电平跨定时器溢出” 的计算问题计算项注释拆解语法 / 变量说明核心功能含义适用场景与示例当前重载值定时器自动重载寄存器值XT 系列XT_GPTM0-CRRSTM32htim-Instance-ARR定时器计数的最大值如 16 位定时器默认65535计数到该值后溢出归零是计算 “不完整周期计数” 的基准所有跨溢出场景都需基于该值拆分计算第一个上升沿值全局变量volatile uint16_t如G_RisingEdgeCnt信号高电平起始点的定时器捕获值上升沿触发时锁存的计数值高电平的 “起点标记”由定时器捕获中断赋值如G_RisingEdgeCnt GPTM_GetCaptureCompare0(...)(当前重载值 - 第一个上升沿值)无符号整数减法表达式计算 “从第一个上升沿到定时器第一次溢出” 的计数值起点到溢出的高电平计数例CRR65535上升沿值 50000 → 结果 1553550000~65535 共 15535 次计数溢出次数全局变量volatile uint16_t如G_OverFlowCnt高电平持续期间定时器发生溢出的总次数由溢出中断累加高电平跨 N 个完整定时器周期时溢出次数 N1如跨 1 个完整周期溢出次数 2(溢出次数 - 1)整数减法表达式计算高电平期间 “完整的定时器周期数”排除首尾不完整周期例溢出次数 3 → 完整周期数 2即 0~65535 重复 2 次(重载值 * (溢出次数 - 1))乘法表达式计算 “完整溢出周期” 对应的总计数高电平在完整周期内的计数例CRR65535溢出次数 3 → 65535 * 2 1310702 个完整周期的总计数下降沿值全局变量volatile uint16_t如G_FallingEdgeCnt信号高电平结束点的定时器捕获值下降沿触发时锁存的计数值高电平的 “终点标记”由定时器捕获中断赋值需配置为 “下降沿捕获” 或 “双边沿捕获”整体计算逻辑高电平计数 (CRR - 上升沿值) (CRR*(溢出次数-1)) 下降沿值拆分高电平为 3 段计数求和起点→第一次溢出 完整溢出周期 最后溢出→下降沿解决 “高电平持续时间 定时器单次计数周期” 的计算误差确保跨溢出场景下结果准确核心补充说明逻辑原理、场景与代码1. 为什么需要这样拆分计算定时器是 “循环计数”0→CRR→0→CRR...若高电平持续时间超过 1 个定时器周期即发生溢出直接用下降沿值 - 上升沿值会得到错误结果无符号减法借位导致。通过 “拆分三段” 可覆盖所有场景第一段上升沿起点→ 第一次溢出不完整周期第二段多次完整溢出周期若有第三段最后一次溢出→下降沿终点不完整周期。2. 典型示例直观理解假设定时器配置16 位CRR65535时钟 1MHz1μs / 次计数高电平起点上升沿G_RisingEdgeCnt50000高电平期间溢出 2 次G_OverFlowCnt3高电平终点下降沿G_FallingEdgeCnt20000。计算过程高电平计数 (65535 - 50000) (65535*(3-1)) 20000 15535 (65535*2) 20000 15535 131070 20000 166605 次计数实际高电平时间 166605 μs 166.605 ms与物理时间完全一致。3. 无溢出场景的兼容性若高电平未溢出G_OverFlowCnt1公式自动简化为高电平计数 (CRR - 上升沿值) 0 下降沿值因无溢出时下降沿值 上升沿值根据无符号整数模运算特性(CRR - 上升沿值) 下降沿值 下降沿值 - 上升沿值 CRR→ 此处需注意无溢出时需单独判断优化若G_OverFlowCnt1直接用下降沿值 - 上升沿值即可例上升沿 10000下降沿 30000 → 30000-1000020000 次计数正确。完整代码中需增加判断避免冗余计算if (G_OverFlowCnt 1) { G_HighLevelCnt G_FallingEdgeCnt - G_RisingEdgeCnt; // 未溢出直接相减 } else { G_HighLevelCnt (XT_GPTM0-CRR - G_RisingEdgeCnt) (XT_GPTM0-CRR*(G_OverFlowCnt-1)) G_FallingEdgeCnt; // 跨溢出计算 }4. 关键前提代码配置要求要使该公式生效需满足 3 个核心配置配置项要求说明定时器捕获模式通道配置为 “双边沿捕获”上升沿 下降沿都触发捕获或分别配置上升沿、下降沿捕获通道中断使能使能 “捕获中断”获取上升沿 / 下降沿值和 “溢出中断”累加溢出次数全局变量修饰上升沿值、下降沿值、溢出次数、高电平计数均需加volatile避免编译器优化5. 完整代码片段结合中断与计算// 全局变量volatile 不可少 volatile uint32_t G_HighLevelCnt 0; // 高电平总计数32位避免溢出 volatile uint16_t G_RisingEdgeCnt 0; // 上升沿捕获值高电平起点 volatile uint16_t G_FallingEdgeCnt 0; // 下降沿捕获值高电平终点 volatile uint16_t G_OverFlowCnt 0; // 溢出次数 volatile uint8_t G_CaptureFlag 0; // 捕获标志0未捕获上升沿1已捕获上升沿 // 定时器0中断服务程序捕获中断溢出中断 void GPTM0_IRQHandler(void) { // 1. 捕获中断通道0双边沿触发 if (GPTM_GetIntStatus((XT_GPTM_TypeDef*)XT_GPTM0, GPTM_INT_CC0) SET) { if (G_CaptureFlag 0) { // 第一次捕获上升沿高电平起点 G_RisingEdgeCnt GPTM_GetCaptureCompare0((XT_GPTM_TypeDef*)XT_GPTM0); G_OverFlowCnt 0; // 重置溢出次数 G_CaptureFlag 1; // 标记已捕获上升沿 } else { // 第二次捕获下降沿高电平终点 G_FallingEdgeCnt GPTM_GetCaptureCompare0((XT_GPTM_TypeDef*)XT_GPTM0); // 核心计算高电平时间处理跨溢出 if (G_OverFlowCnt 1) { G_HighLevelCnt G_FallingEdgeCnt - G_RisingEdgeCnt; // 未溢出 } else { G_HighLevelCnt (XT_GPTM0-CRR - G_RisingEdgeCnt) (XT_GPTM0-CRR * (G_OverFlowCnt - 1)) G_FallingEdgeCnt; // 跨溢出 } G_CaptureFlag 0; // 重置标志等待下一次测量 } GPTM_ClearIntPendingBit((XT_GPTM0, GPTM_INT_CC0); // 清除捕获中断标志 } // 2. 溢出中断更新事件中断 if (GPTM_GetIntStatus((XT_GPTM_TypeDef*)XT_GPTM0, GPTM_INT_UEV) SET) { if (G_CaptureFlag 1) { // 已捕获上升沿才累加溢出次数 G_OverFlowCnt; } GPTM_ClearIntPendingBit((XT_GPTM_TypeDef*)XT_GPTM0, GPTM_INT_UEV); // 清除溢出中断标志 } } // 主程序换算高电平实际时间 void main(void) { GPTM_Init(); // 初始化GPTM0通道0双边沿捕获使能捕获溢出中断省略配置 _EINT(); // 使能全局中断 uint32_t timer_clk 1000000; // 定时器时钟1MHz1μs/次 float high_level_time; // 高电平时间单位ms while(1) { if (G_HighLevelCnt ! 0) { // 换算为实际时间计数次数 / 时钟频率Hz 秒 → 转毫秒 high_level_time (float)G_HighLevelCnt / timer_clk * 1000; printf(高电平时间%.2f ms\n, high_level_time); // 打印结果 G_HighLevelCnt 0; // 清零等待下一次测量 } } }6. 跨平台兼容性XT 系列 vs STM32该计算逻辑的核心是 “定时器计数原理”与具体 MCU 无关仅需替换寄存器 / 函数命名功能项XT 系列示例STM32HAL 库示例自动重载值XT_GPTM0-CRRhtim1.Instance-ARR读取捕获值GPTM_GetCaptureCompare0(XT_GPTM0)HAL_TIM_ReadCapturedValue(htim1, TIM_CHANNEL_0)捕获中断标志GPTM_INT_CC0TIM_IT_CC1通道 1 为例溢出中断标志GPTM_INT_UEVTIM_IT_UPDATE总结该注释对应的公式是嵌入式高电平时间测量的核心逻辑核心价值是解决 “高电平跨定时器溢出” 的计算误差覆盖所有时长场景基于定时器自动重载值拆分计数确保结果精准需配合 “双边沿捕获 溢出中断” 的硬件配置及volatile修饰的全局变量才能正常工作。实际使用时需根据 MCU 型号调整寄存器 / 函数命名并在无溢出时优化计算直接相减提升效率。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设化学图片python编写简单网页

Windows右键菜单优化大师:ContextMenuManager全新体验指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 想要彻底改造Windows右键菜单,…

张小明 2026/1/10 9:26:22 网站建设

网站建设流程详细全国工商企业信息查询系统

STLink引脚图详解:从入门到实战的硬核指南在嵌入式开发的世界里,调试接口就像医生的听诊器——看不见它时觉得无关紧要,一旦连不上,整个项目立刻“心跳停止”。对于STM32开发者而言,STLink就是那把最趁手的工具。而真正…

张小明 2026/1/10 12:12:51 网站建设

单页面应用的网站什么官网比较容易做网站

GLM-TTS显存占用过高?10GB以下显卡适配优化建议 在语音合成技术飞速发展的今天,零样本语音克隆已经不再是实验室里的概念,而是逐步走进了虚拟主播、有声书制作、智能客服等真实应用场景。GLM-TTS 作为一款基于 GLM 架构的端到端文本到语音系统…

张小明 2026/1/10 12:12:51 网站建设

天津网站建站公司双体系建设网站

💻 P12 【效率核弹】Pandas 自动化:告别手动处理 Excel 🎯 学习目标: 环境准备:利用 Agent 模式自动安装处理 Excel 的必要零件。读取与写入:学会用一行代码让 Python “吞下”整个 Excel 表格。数据筛选与…

张小明 2026/1/10 12:12:52 网站建设

门户网站案例昆明seo排名外包

利用Jupyter快速启动VoxCPM-1.5-TTS-WEB-UI详解 在智能语音应用日益普及的今天,越来越多开发者希望快速验证一个高质量文本转语音(TTS)系统的实际效果。然而,传统部署流程往往涉及复杂的环境配置、依赖安装和多服务协调&#xff0…

张小明 2026/1/11 13:28:53 网站建设

海淘哪些网站做攻略好安康哪里做网站

文章目录 系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 :文章底部获取博主联系方式! 系统截图 django数据可视化分析系统9问钅内容_6 基于大数据的图书推荐系统的协同过滤…

张小明 2026/1/10 12:12:53 网站建设