STM32 小白实战 05:PWM 输入模式测频率与占空比,彻底理清 CCR1、CCR2 和复位模式
摘要今天完成了 TIM2 输出 PWM、TIM3 输入捕获测量频率与占空比这一整套实验链路的梳理。重点不是死记库函数而是理解TIM2 负责产生 PWMTIM3 通过 PWM 输入模式同时记录完整周期和高电平时间。同时排查了函数声明、函数定义和调用名称不一致造成的隐式声明与 Undefined symbol 链接错误。当前代码逻辑已整理最终 OLED 实测频率和占空比结果标记为“待确认”。开发环境项目配置MCUSTM32F103C8T6IDEKeil μVision 5编译器ARMCC V5.06 update 7固件库STM32F10x 标准外设库PWM输出TIM2_CH1 / PA0输入捕获TIM3_CH1 / PA6实验接线PA0 接 PA6显示OLED一、实验整体链路TIM2 从 PA0 输出 PWM↓ PA0 接 PA6TIM3 从 PA6 测量 PWM↓CCR1 记录完整周期CCR2 记录高电平时间↓计算频率和占空比并显示到 OLEDTIM2 是“信号发生器”TIM3 是“测量仪”。二、PWM 输出参数怎么得到 100 Hz、80% 占空比现象主程序使用 PWM_SetPrescaler(7200-1) 和 PWM_SetCompare(80)PWM 初始化中的 ARR 为 100-1需要确认最终输出参数。原因TIM2 时钟按 72 MHz 计算经过 7200 分频后为 10 kHzARR1 为 100因此输出频率为 100 Hz。CCR 为 80因此占空比为 80%。72 MHz ÷ 7200 10 kHz10 kHz ÷ 100 100 Hz80 ÷ 100 80%周期 10 ms高电平时间 8 ms图1 PWM频率、占空比与PSC/ARR/CCR的关系解决方法保持 PSC 控制计数速度、ARR 控制周期、CCR 控制高电平时间。当前参数保持 ARR99、PSC7199、CCR80。验证结果根据参数计算理论输出为 100 Hz、80% 占空比。实际测量结果待确认。三、调用 PWM 函数时出现隐式声明和 Undefined symbol现象Keil 提示 PWM_SetPrescaler declared implicitly并在链接阶段提示 Undefined symbol PWM_SetCompare。原因PWM.h、PWM.c 和 main.c 中的接口名称没有统一例如 PWM_SetCompare 与 PWM_SetCompare1、PWM_SetPrescaler 与 PWM_Prescaler。解决方法声明、定义、调用统一使用 PWM_SetCompare() 和 PWM_SetPrescaler()。修改头文件后执行 Rebuild all target files。void PWM_SetCompare(uint16_t Compare){TIM_SetCompare1(TIM2, Compare);}void PWM_SetPrescaler(uint16_t Prescaler){TIM_PrescalerConfig(TIM2, Prescaler,TIM_PSCReloadMode_Immediate);}验证结果错误原因已确认。最终重新编译结果待确认。四、TIM3 输入捕获却误初始化了 TIM2现象输入捕获模块开启的是 TIM3但时基初始化曾写为 TIM_TimeBaseInit(TIM2, ...)。原因复制定时器代码后外设实例没有全部替换。这样 TIM2 被再次修改TIM3 没有获得预期的 PSC 和 ARR。解决方法改为 TIM_TimeBaseInit(TIM3, TIM_TimeBaseInitStructure)并逐项检查 IC.c 中所有定时器参数是否均为 TIM3。验证结果代码中的时基对象已修正为 TIM3。实际测频结果待确认。五、输入捕获模块里不需要配置 PWM 输出比较现象IC.c 中同时配置 TIM_OC1Init() 和 TIM_PWMIConfig()。原因TIM_OC1Init() 用于输出比较而 TIM3 在本实验中只负责输入捕获。解决方法删除 TIM_OCInitTypeDef 和整段 TIM_OC1Init() 输出配置PWM 输入模式只保留 TIM_PWMIConfig()。验证结果输入捕获模块职责已整理为“只测量、不输出”。最终运行结果待确认。六、CCR1 和 CCR2 到底记录什么现象PWM 输入模式同时使用 CCR1 和 CCR2容易混淆两者的含义。原因TI1 上升沿作为复位触发源。CH1 直接捕获相邻上升沿之间的完整周期CH2 间接捕获上升沿到下降沿之间的高电平时间。上升沿CNT 清零并开始计时下降沿CCR2 保存高电平时间下一个上升沿CCR1 保存完整周期CNT 再次清零100 Hz、80% 理论值CCR1 ≈ 10000CCR2 ≈ 8000解决方法记住“频率看 CCR1占空比看 CCR2/CCR1”。验证结果CCR1 和 CCR2 的物理含义已经明确。实际捕获值待确认。七、频率和占空比公式现象需要把 TIM3 捕获值换算为可显示的频率和占空比。原因TIM3 按 72 MHz 时钟和 PSC71 配置后计数频率为 1 MHz每个计数约为 1 μs。频率 1000000 ÷ (CCR1 1)占空比 (CCR2 1) × 100 ÷ (CCR1 1)解决方法读取 CCR1、CCR2 后进行计算并对 Period0 做保护避免没有有效输入时产生异常结果。uint32_t IC_GetFreq(void){uint16_t Period TIM_GetCapture1(TIM3);if (Period 0) return 0;return 1000000 / (Period 1);}uint32_t IC_GetDuty(void){uint16_t Period TIM_GetCapture1(TIM3);uint16_t HighTime TIM_GetCapture2(TIM3);if (Period 0) return 0;return (HighTime 1) * 100 / (Period 1);}验证结果理论输入为 100 Hz、80% 时OLED 应接近显示 Freq:00100Hz、Duty:80%。实际显示待确认。八、固定排查清单出现 declared implicitly先检查头文件中的函数声明。出现 Undefined symbol检查源文件中是否存在完全同名的函数定义。声明、定义、调用三处的函数名和参数必须完全一致。配置 TIM3 时检查所有库函数的第一个参数是否误写为 TIM2。输入捕获模块不要混入 TIM_OCxInit() 输出比较配置。使用 TIM_PWMIConfig() 后明确 CCR1 记录周期、CCR2 记录高电平时间。检查 PA0 是否真正连接 PA6。确认输出为 TIM2_CH1输入为 TIM3_CH1。计算频率前确认 TIM3 实际计数频率。没有输入信号时对捕获值为 0 的情况做保护。修改头文件或接口后执行 Rebuild all target files。编译通过后仍要用 OLED 或示波器验证实际结果。

相关新闻

揭秘升讯威微信营销系统架构:核心组件与代码实现原理详解

揭秘升讯威微信营销系统架构:核心组件与代码实现原理详解

揭秘升讯威微信营销系统架构:核心组件与代码实现原理详解 【免费下载链接】Sheng.WeixinConstruction 升讯威微信营销系统(第三方微信平台)完整源代码。包括了面向线下商家的诸多营销功能。【吸粉】 投票、定期抽奖、聚人气抽奖、摇一摇抽奖、…

2026/7/20 19:16:18 阅读更多 →
GPT-5.6百万token低至2.4元!还有免费大模型无限制调用!

GPT-5.6百万token低至2.4元!还有免费大模型无限制调用!

2026/7/13通知:新增kiro反代Claude渠道、GPT 5.6 Sol 优惠价格官网1/15左右,无掺水。支持最强fable5模型! 可免费 使用 基于Agnes2.0 模型的高性能femto中转模型,以及qwen系列模型网站base URL(官网地址)&a…

2026/7/20 19:16:18 阅读更多 →
systemd-docker 安全指南:容器隔离、权限管理与安全最佳实践

systemd-docker 安全指南:容器隔离、权限管理与安全最佳实践

systemd-docker 安全指南:容器隔离、权限管理与安全最佳实践 【免费下载链接】systemd-docker Wrapper for "docker run" to handle systemd quirks 项目地址: https://gitcode.com/gh_mirrors/sy/systemd-docker 在容器化部署日益普及的今天&…

2026/7/20 19:16:18 阅读更多 →

最新新闻

超级App:当IM成为企业架构的神经中枢

超级App:当IM成为企业架构的神经中枢

超级App:当IM成为企业架构的“神经中枢”,集成逻辑正被重新定义 现象:从“系统烟囱”到“超级App”的呼声为何突然爆发一场静默的反思正在头部企业CIO群体中蔓延。过去十年,企业以近乎军备竞赛的姿态建设了几十套业务系统&#xf…

2026/7/22 5:23:47 阅读更多 →
短信验证码安全终极指南:从原理到实战,构建防诈骗立体防御体系

短信验证码安全终极指南:从原理到实战,构建防诈骗立体防御体系

1. 项目概述:当“验证码”成为资金安全的最后一道闸门最近和几位在银行风控部门工作的朋友聊天,他们提到一个趋势:传统的电信诈骗话术正在失效,骗子们开始把火力集中在一个我们每天都会接触,却最容易忽视的环节——短信…

2026/7/22 5:23:47 阅读更多 →
AMD Ryzen 5 9600X电竞处理器评测与装机指南

AMD Ryzen 5 9600X电竞处理器评测与装机指南

1. 产品定位解析:Zen5架构的全大核电竞处理器AMD Ryzen 5 9600X作为Zen5架构的中端主力型号,其900-1400元的定价区间精准卡位在主流电竞玩家消费带。与上代7600X相比,最显著的改进是采用纯性能核心设计,彻底摒弃了小核架构&#x…

2026/7/22 5:23:47 阅读更多 →
Agent智能体技术:概念、框架与开发实践

Agent智能体技术:概念、框架与开发实践

1. Agent智能体技术全景解析最近在技术社区里,Agent相关的讨论热度持续攀升。作为一个长期关注AI领域发展的从业者,我注意到从基础框架到实际应用,Agent技术正在经历快速迭代。今天我想系统性地聊聊这个领域,特别是针对开发者关心…

2026/7/22 5:23:47 阅读更多 →
别再盲目上大模型!这3类低代码可解场景强行套用LLM,正让团队每月多烧42万元算力预算

别再盲目上大模型!这3类低代码可解场景强行套用LLM,正让团队每月多烧42万元算力预算

更多请点击: https://intelliparadigm.com 第一章:AI模型适用场景分析 选择合适的AI模型并非仅取决于参数规模或基准测试分数,而应深度匹配任务本质、数据特征与工程约束。不同模型架构在推理模式、训练范式与部署成本上存在显著差异&#x…

2026/7/22 5:23:47 阅读更多 →
影刀RPA 社交媒体数据分析:粉丝画像与内容表现

影刀RPA 社交媒体数据分析:粉丝画像与内容表现

title: “影刀RPA 社交媒体数据分析:粉丝画像与内容表现” date: 2026-07-01 author: 林焱 影刀RPA 社交媒体数据分析:粉丝画像与内容表现 做内容运营不知道粉丝画像,不知道什么内容效果好——全靠感觉。用影刀定期采集自己账号和竞品账号的…

2026/7/22 5:22:47 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻