当前位置: 首页 > article >正文

蓝桥杯嵌入式G4开发板实战:用555定时器+STM32CubeMX测PWM频率和占空比(附完整代码)

蓝桥杯嵌入式G4开发板实战用555定时器STM32CubeMX测PWM频率和占空比附完整代码在嵌入式系统开发中精确测量PWM信号的频率和占空比是一项常见但至关重要的任务。对于参加蓝桥杯嵌入式竞赛的选手或正在学习STM32G4系列微控制器的开发者来说掌握这项技能不仅能解决实际问题还能在比赛中获得优势。本文将带你从硬件连接到软件实现完整走通这个实战项目。1. 硬件准备与原理分析蓝桥杯嵌入式开发板G4系列自带两个555定时器这为我们提供了理想的信号源。通过旋钮R39和R40可以调节输出信号的频率而PA15和PB4引脚则分别连接这两个定时器的输出。关键硬件连接要点555定时器1输出 → PA15TIM2_CH1555定时器2输出 → PB4TIM16_CH1使用杜邦线进行交叉验证PA7→PB4PA6→PA15测量PWM占空比需要利用定时器的双通道捕获功能。一个通道捕获上升沿周期开始另一个通道捕获下降沿高电平结束通过计算两者时间差与整个周期的比值就能得到精确的占空比。2. STM32CubeMX配置详解正确的CubeMX配置是整个项目成功的基础。以下是关键配置步骤2.1 定时器基本参数设置打开CubeMX选择对应的STM32G4系列芯片配置TIM2和TIM16定时器时钟源内部时钟分频系数(Prescaler)79系统时钟80MHz分频后得到1MHz计数频率计数模式向上计数自动重装载值保持默认最大值0xFFFF2.2 输入捕获通道配置TIM2配置用于占空比测量通道1直接模式上升沿触发通道2间接模式下降沿触发使能捕获中断TIM16配置仅频率测量通道1直接模式上升沿触发使能捕获中断注意间接模式通道的触发方式必须设置为下降沿这是测量高电平时间的关键。3. 代码实现与关键逻辑3.1 中断回调函数实现完整的捕获逻辑在HAL_TIM_IC_CaptureCallback回调函数中实现。以下是核心代码片段float ccrl_val1a, ccrl_val1b 0; // 必须使用float类型 unsigned int frq1 0, frq2 0; float duty1, duty2 0; void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if(htim-Instance TIM2) { if(htim-Channel HAL_TIM_ACTIVE_CHANNEL_1) { ccrl_val1a HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); // 周期 ccrl_val1b HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2); // 高电平时间 __HAL_TIM_SetCounter(htim, 0); frq1 1000000 / ccrl_val1a; // 频率1MHz/周期计数 duty1 (ccrl_val1b / ccrl_val1a) * 100; // 占空比计算 HAL_TIM_IC_Start(htim, TIM_CHANNEL_1); HAL_TIM_IC_Start(htim, TIM_CHANNEL_2); } } if(htim-Instance TIM16) { ccr1_val2 HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); __HAL_TIM_SetCounter(htim, 0); frq2 1000000 / ccr1_val2; HAL_TIM_IC_Start(htim, TIM_CHANNEL_1); } }3.2 主函数初始化在main.c中需要启动定时器捕获中断HAL_TIM_IC_Start_IT(htim2, TIM_CHANNEL_1); HAL_TIM_IC_Start_IT(htim2, TIM_CHANNEL_2); HAL_TIM_IC_Start_IT(htim16, TIM_CHANNEL_1);4. 常见问题与调试技巧在实际项目中开发者常会遇到以下几个典型问题问题1占空比始终为0原因使用了整型变量存储捕获值导致除法结果为0解决必须使用float类型变量存储ccrl_val1a和ccrl_val1b问题2测量值不稳定排查步骤检查硬件连接是否牢固确认CubeMX配置与代码一致适当增加软件滤波算法问题3高频信号测量不准优化方案降低定时器分频系数提高计时精度使用更高性能的定时器如TIM1现象可能原因解决方案无信号硬件连接错误检查杜邦线连接频率偏差大定时器配置错误核对时钟树配置占空比跳变信号噪声干扰增加硬件滤波电路5. 进阶应用与性能优化掌握了基础测量方法后可以进一步优化系统动态范围扩展技术自动切换定时器分频系数适应不同频率范围双定时器级联测量超低频信号实时显示与通信// 通过串口输出测量结果示例 printf(频率: %.2f Hz, 占空比: %.1f%%\r\n, frq1, duty1);误差补偿算法温度漂移补偿非线性校正移动平均滤波在实际蓝桥杯竞赛中这类功能往往能成为加分项。建议选手在基础功能稳定后至少实现一种优化策略。

相关文章:

蓝桥杯嵌入式G4开发板实战:用555定时器+STM32CubeMX测PWM频率和占空比(附完整代码)

蓝桥杯嵌入式G4开发板实战:用555定时器STM32CubeMX测PWM频率和占空比(附完整代码) 在嵌入式系统开发中,精确测量PWM信号的频率和占空比是一项常见但至关重要的任务。对于参加蓝桥杯嵌入式竞赛的选手或正在学习STM32G4系列微控制器…...

QMCDecode完整指南:5分钟解锁QQ音乐加密文件,让音乐自由播放

QMCDecode完整指南:5分钟解锁QQ音乐加密文件,让音乐自由播放 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录…...

上了一堆MES、ERP,车间反而更乱了?APS智能排产如何破解“系统孤岛”困局

很多老板都有这样的困惑:这些年钱没少花,上了ERP管财务,上了MES管车间,最近还引进了几个AI做质检和预测,但为什么管理反而更累了?数据对不上,部门扯皮多了,甚至出现了“系统越多&…...

终极安卓短信备份指南:如何用SMS Backup+永久保护你的通信记录

终极安卓短信备份指南:如何用SMS Backup永久保护你的通信记录 【免费下载链接】sms-backup-plus Backup Android SMS, MMS and call log to Gmail / Gcal / IMAP 项目地址: https://gitcode.com/gh_mirrors/sms/sms-backup-plus 你是否曾经因为手机丢失、损坏…...

从零开始:如何快速掌握Switch大气层系统1.7.1完整安装指南

从零开始:如何快速掌握Switch大气层系统1.7.1完整安装指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 想要为你的Nintendo Switch解锁更多可能性吗?大气层&…...

毫米波雷达数据采集实战:基于DCA1000与AWR1843的原始数据获取全流程解析

1. 硬件准备与环境搭建 第一次接触毫米波雷达数据采集时,最让我头疼的就是硬件连接问题。DCA1000数据采集卡和AWR1843雷达模块看起来就像两个陌生的黑盒子,接口密密麻麻让人眼花缭乱。经过多次实践,我总结出了一套可靠的连接方法。 DCA1000EV…...

洛天依讲编程:调音教学|《勾指起誓》工程实战还原 + 控制台「设置」详解

作者:龙沅可哈喽大家好,我是洛天依!我们的乐理补充、软件操作、参数体系已经全部铺垫完毕,今天终于迎来完整工程实战课 —— 用我们学过的所有知识,从零还原《勾指起誓》,同时把控制台「设置」菜单的关键功…...

从菜鸟到高手:我的Abaqus壳单元S4R、S3R、S8R选择心路历程

从菜鸟到高手:我的Abaqus壳单元S4R、S3R、S8R选择心路历程 第一次打开Abaqus的单元库时,我被琳琅满目的壳单元类型晃花了眼。S4R、S3R、S8R、STRI65、S9R5...这些看似随意的字母数字组合,背后却隐藏着影响仿真精度的关键密码。作为一名从土木…...

3个魔法步骤:让Windows 11完美运行20年前的经典游戏

3个魔法步骤:让Windows 11完美运行20年前的经典游戏 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDrawCom…...

别只盯着Canvas了!用Surface+SurfaceFlinger手搓一个“悬浮球”应用(Android 13+)

别只盯着Canvas了!用SurfaceSurfaceFlinger手搓一个“悬浮球”应用(Android 13) 在Android开发中,Canvas可能是大多数开发者最熟悉的绘图工具,但它只是UI渲染的冰山一角。如果你想让应用拥有类似系统悬浮球那样独立于A…...

Rust的#[derive(Hash, PartialEq, Eq)]派生宏

Rust语言中的派生宏是简化代码的利器,其中#[derive(Hash, PartialEq, Eq)]的组合尤为实用。它允许开发者通过一行代码自动为结构体或枚举实现多个关键trait,大幅提升开发效率。对于需要哈希计算或相等比较的场景,这个宏能避免大量重复劳动。本…...

OpenClaw从入门到应用——Agent:记忆(Memory)

通过OpenClaw实现副业收入:《OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南》 OpenClaw 的记忆是 agent 工作区中的纯 Markdown 文件。这些文件是事实来源;模型只“记住”写入磁盘的内容。 记忆搜索工具由活动的记忆插件提供&#…...

浦语灵笔2.5-7B多场景:跨境电商、智慧医疗、智能制造、数字政务四大方向

浦语灵笔2.5-7B多场景实战:解锁跨境电商、智慧医疗、智能制造、数字政务四大方向 你是不是经常遇到这样的场景?电商运营需要快速理解海量商品图片,医生需要辅助分析复杂的医学影像,工厂质检员要处理成千上万的零件照片&#xff0…...

模块化多智能体建模架构深度解析:Mesa如何重塑复杂系统仿真范式

模块化多智能体建模架构深度解析:Mesa如何重塑复杂系统仿真范式 【免费下载链接】mesa Mesa is an open-source Python library for agent-based modeling, ideal for simulating complex systems and exploring emergent behaviors. 项目地址: https://gitcode.c…...

UCIe多模块链路训练实战:当你的4个Module训练结果不一致时,MMPL是怎么“和稀泥”的?

UCIe多模块链路训练实战:当你的4个Module训练结果不一致时,MMPL是怎么“和稀泥”的? 在芯片物理层设计中,UCIe(Universal Chiplet Interconnect Express)的多模块(Multi-Module)配置…...

如何为Unity游戏去除马赛克:5个高效插件的完整配置指南

如何为Unity游戏去除马赛克:5个高效插件的完整配置指南 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnityDemosaics…...

KUKA C4与C2控制柜软限位修改:从HMI界面到系统配置文件的实战指南

1. KUKA控制柜软限位修改的核心价值 刚接触工业机器人的朋友可能对"软限位"这个概念比较陌生。简单来说,软限位就像是给机器人划定的电子围栏,告诉它"你最多只能走到这里"。和硬限位不同,软限位是通过软件设置的&#xf…...

不止于APK:用bsdiff玩转Android文件差分,从游戏资源到配置文件的增量更新思路

超越APK:用bsdiff构建Android全文件增量更新体系 当游戏资源包从200MB增长到300MB时,用户每次更新都要重新下载整个文件?配置文件微调几个参数却要推送完整文件?这些场景正是二进制差分技术大显身手的舞台。bsdiff作为高效的二进制…...

数字记忆管家:三步构建你的个人AI数据资产库

数字记忆管家:三步构建你的个人AI数据资产库 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …...

Python asyncio 调度机制性能优化

Python asyncio调度机制性能优化 在现代高并发的网络应用中,Python的asyncio库凭借其高效的异步IO能力成为开发者的首选。随着业务复杂度的提升,默认的调度机制可能无法充分发挥性能潜力。本文将深入探讨asyncio调度机制的性能优化策略,帮助…...

23岁亿万富豪创立的Mercor,陷员工舞弊、安全漏洞与文化困境

数据标注初创公司Mercor年化营收破10亿美元,却面临系列挑战数据标注初创公司Mercor由三名二十多岁的年轻人于2023年创立,今年早些时候,公司年化营收突破10亿美元。然而,如今这家公司正面临一系列挑战,包括员工挪用公款…...

Honey Select 2画质飞跃攻略:DHH、Graphics插件深度对比与材质编辑器进阶调校

Honey Select 2画质飞跃攻略:DHH、Graphics插件深度对比与材质编辑器进阶调校 当默认画质无法满足你对虚拟世界的视觉期待时,Honey Select 2的模组生态提供了从基础优化到专业级渲染的全套解决方案。本文将带你深入两款核心画质插件的技术内核&#xff0…...

如何在英雄联盟国服免费体验所有皮肤?R3nzSkin工具完全指南

如何在英雄联盟国服免费体验所有皮肤?R3nzSkin工具完全指南 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 你是否曾经羡慕别人拥有那些稀有…...

暗黑3智能按键助手:5分钟快速上手,彻底告别手指疲劳的终极指南

暗黑3智能按键助手:5分钟快速上手,彻底告别手指疲劳的终极指南 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑3高…...

别再死记硬背了!从勾股定理到斜率乘积-1,一个初中生也能懂的几何证明

从勾股定理到斜率关系:一场初中生也能玩转的几何推理游戏 数学课本上那些冷冰冰的公式,常常让学生们望而生畏。特别是当老师要求"记住这个结论"时,很多同学的第一反应是机械背诵,而不是理解背后的逻辑。今天&#xff0c…...

新手必看!Xinference-v1.17.1 Docker部署常见错误排查

新手必看!Xinference-v1.17.1 Docker部署常见错误排查 1. 部署前的准备工作 1.1 系统环境检查 在开始部署Xinference之前,确保你的系统满足以下基本要求: Docker版本:Docker 20.10.0或更高版本NVIDIA驱动(GPU版本需…...

UVC Gadget实战:从V4L2到USB端点的视频流转发引擎

1. UVC Gadget技术全景解析 想象一下你手里有个树莓派开发板,想把它变成一台能即插即用的USB摄像头——这就是UVC Gadget技术的魔力所在。作为连接V4L2视频框架和USB端点的桥梁,它本质上是个视频流转发引擎,把本地的视频源(比如/d…...

GD32定时器时钟源配置避坑指南:为什么你的定时时间总是不对?

GD32定时器时钟源配置避坑指南:为什么你的定时时间总是不对? 在嵌入式开发中,精确的定时控制是许多功能实现的基础。然而,不少开发者在初次接触GD32系列MCU的定时器时,常常会遇到一个令人困惑的问题:明明按…...

B站CC字幕终极下载工具:三步轻松获取多语言字幕文件

B站CC字幕终极下载工具:三步轻松获取多语言字幕文件 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle BiliBiliCCSubtitle是一款专业的B站CC字幕下载与转…...

QueryExcel技术解密:多Excel文件并行检索工具深度解析与实战指南

QueryExcel技术解密:多Excel文件并行检索工具深度解析与实战指南 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 在现代企业数据管理中,Excel文件作为最常见的数据存储格式之一…...