news 2026/4/18 23:09:57

基于STM32的数字频率计项目:测量方波信号,精度达±1%,包含时基、整形及调节电路等功能,输...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于STM32的数字频率计项目:测量方波信号,精度达±1%,包含时基、整形及调节电路等功能,输...

基于STM32开发的数字频率计项目 组成部分:时基电路,整形电路,调节电路,信号输入。 实现功能:测量信号输入幅度1-5v方波,频率为1khz-10khz测量精度1%,信号输出。 当输入信号大于15v时,具有报警信息。 具备串口通信,可计算占空比。 包括程序源码和原理图,程序源码注释详细,适合单片机开发人员

最近搞了个基于STM32的数字频率计项目,感觉挺有意思的,拿出来分享一下。这个项目主要是用来测量方波的频率和占空比,测量范围在1kHz到10kHz之间,精度能控制在1%以内。当然,如果输入信号超过15V,它还会发出报警信息。整个项目包括了时基电路、整形电路、调节电路和信号输入部分,最后还通过串口通信输出数据。

硬件部分

首先,时基电路是整个频率计的核心,它决定了测量的精度。我们用的是STM32的定时器功能,配置成输入捕获模式。整形电路则是将输入的方波信号处理成适合STM32读取的TTL电平。调节电路主要是为了适应不同的输入信号幅度,确保信号在1V到5V之间。

软件部分

软件部分主要是STM32的程序,代码量不大,但功能挺全。首先是定时器的配置,这里我们用TIM2定时器来捕获输入信号的上升沿和下降沿,计算周期和占空比。

void TIM2_IRQHandler(void) { if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET) { // 捕获到上升沿 rising_edge = TIM_GetCapture1(TIM2); TIM_ClearITPendingBit(TIM2, TIM_IT_CC1); } if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET) { // 捕获到下降沿 falling_edge = TIM_GetCapture2(TIM2); TIM_ClearITPendingBit(TIM2, TIM_IT_CC2); } // 计算周期和占空比 period = falling_edge - rising_edge; duty_cycle = (falling_edge - rising_edge) / period * 100; }

接下来是串口通信部分,我们通过USART将测量结果发送到上位机。为了方便调试,我还加了一些调试信息。

void USART_SendData(uint16_t data) { while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); USART_SendData(USART1, data); } void USART_SendString(char *str) { while (*str) { USART_SendData(*str++); } }

报警功能

当输入信号超过15V时,系统会通过LED灯和串口发出报警信息。这个功能是通过ADC采样实现的,采样值超过某个阈值时触发报警。

void ADC_IRQHandler(void) { if (ADC_GetITStatus(ADC1, ADC_IT_EOC) != RESET) { uint16_t adc_value = ADC_GetConversionValue(ADC1); if (adc_value > ALARM_THRESHOLD) { GPIO_SetBits(GPIOC, GPIO_Pin_13); // 点亮LED USART_SendString("ALARM: Input voltage exceeds 15V!\r\n"); } ADC_ClearITPendingBit(ADC1, ADC_IT_EOC); } }

总结

这个项目虽然不算复杂,但涵盖了STM32的多个功能模块,包括定时器、ADC、USART等,非常适合用来学习和巩固STM32的基础知识。代码和原理图我都放在了GitHub上,有兴趣的朋友可以去看看。总的来说,这个数字频率计项目还是挺有成就感的,尤其是看到它准确测量出信号频率和占空比的时候,感觉之前的努力都值了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:41:46

第101章 PNP的曙光(悦儿)

弦光研究院深处,有一间特殊的静室。这里没有窗户,四壁和天花板皆由吸音材料覆盖,地面是冰冷的黑色金属板。唯一的光源来自房间中央悬浮着的一个全息投影装置,此刻正投射出一个极其复杂、不断缓慢变幻着的多维几何结构。这便是悦儿的“思维熔炉”,一个将她内心对数学宇宙的…

作者头像 李华
网站建设 2026/4/18 2:59:49

基于SpringBoot+Vue的智能AI问答个人健康管理系统_个人健康饮食搭配推荐系统 rb45796s 开题报告任务书

目录已开发项目效果实现截图开发技术介绍核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果…

作者头像 李华
网站建设 2026/4/18 2:14:03

【Open-AutoGLM没反应】:3大原因深度剖析与5步快速恢复指南

第一章:Open-AutoGLM没反应当使用 Open-AutoGLM 时,若模型调用后无任何响应或输出停滞,通常由环境配置、依赖冲突或 API 调用逻辑错误导致。排查此类问题需从服务启动状态、请求格式和运行时日志入手。检查服务是否正常启动 确保 Open-AutoGL…

作者头像 李华
网站建设 2026/4/18 8:41:55

【Open-AutoGLM报错全解析】:20年专家亲授5大常见错误排查方案

第一章:Open-AutoGLM报错全解析概述在使用 Open-AutoGLM 框架进行自动化大语言模型调用与任务编排时,开发者常会遇到各类运行时错误与配置异常。这些报错可能源于环境依赖缺失、API密钥未正确配置、输入格式不符合规范,或模型服务端响应异常等…

作者头像 李华
网站建设 2026/4/18 10:49:44

开题报告不再“卡壳”:一篇科普带你解锁高效科研起点——宏智树AI如何帮本科生稳稳迈出论文第一步?

每年到了大三下学期或大四上学期,高校图书馆的座位总是格外抢手。不是因为期末考试,而是因为——开题报告来了。对不少本科生而言,“写开题”仿佛是一道无形的高墙:选题没方向、文献看不懂、研究框架搭不起来、格式总被导师打回……

作者头像 李华
网站建设 2026/4/18 5:44:29

错过等一年!Open-AutoGLM手机自动化技术首次全面公开

第一章:Open-AutoGLM手机自动化技术概述Open-AutoGLM 是一种基于大语言模型驱动的智能手机自动化框架,旨在通过自然语言指令实现对移动设备的精准控制。该技术结合了视觉识别、动作规划与语义理解能力,使用户能够以接近人类对话的方式完成复杂…

作者头像 李华