一、设计方案:

1、STM32F1系列共有8个定时器,选取两个通用定时器进行配置;
2、一个定时器用作1S定时,一个配置为外部时钟模式2;
3、ETR2模式下会对信号上升沿进行计数。

1、通用定时器框图:

2、具体配置及原理:

(1)、配置TIM4为ETR2模式,选择极性,触发控制器进行计数,CNT值满后进入定时器中断溢出。因为计数器只有16位,记65536次便会溢出,在中断服务函数中定义一个变量对溢出值进行储存,大大增加了测频的上限。
(2)、配置TIM5定时1S进入中断,在中断中对数据进行处理打印。

3、cubeMX配置





二、程序代码

    HAL_TIM_Base_Start(&htim4); //main.c中开启定时器及中断HAL_TIM_Base_Start(&htim5);HAL_TIM_Base_Start_IT(&htim4);   HAL_TIM_Base_Start_IT(&htim5);void TIM4_IRQHandler(void){/* USER CODE BEGIN TIM4_IRQn 0 *//* USER CODE END TIM4_IRQn 0 */HAL_TIM_IRQHandler(&htim4);/* USER CODE BEGIN TIM4_IRQn 1 */__HAL_TIM_CLEAR_FLAG(&htim4,TIM_FLAG_UPDATE); //清除更新中断标志位count_x ++ ;                        //计数器溢出后变量进行自加/* USER CODE END TIM4_IRQn 1 */}void TIM5_IRQHandler(void){/* USER CODE BEGIN TIM5_IRQn 0 *//* USER CODE END TIM5_IRQn 0 */HAL_TIM_IRQHandler(&htim5);/* USER CODE BEGIN TIM5_IRQn 1 */__HAL_TIM_CLEAR_FLAG(&htim5,TIM_FLAG_UPDATE);count_ms = TIM4->CNT;                       //读取计数器未溢出数count_s = count_x*65536 + count_ms;          //溢出数*65536+未溢出数count_c = count_s+(count_s*0.00137);        //数据修正printf("%d HZ \r\n ",count_c);               //打印数据count_x=0;TIM4->CNT=0;/* USER CODE END TIM5_IRQn 1 */}

三、测试结果


身边条件有限,最大只测到5MHz,故目前来看测量范围在1HZ到5MHz都较为准确,测量误差值最大为0.02%。

若有概念错误或陈述不清处,请指正。。

cube配置定时器ETR2模式测频实验相关推荐

  1. STM32F4系列HAL库配置定时器实验——输入捕获

    STM32F4系列HAL库配置定时器实验--输入捕获 输入捕获简单讲解 输入捕获模式可以用来测量脉冲宽度或者测量频率.我们以测量周期和频率为例,用一个简图来说明输入捕获的原理 假定定时器工作在向上计数 ...

  2. STM32F103C8T6驱动舵机SG90 配置定时器TIM2,TIM3,TIM4的多种重映射模式下的不同IO口

    STM32F103C8T6驱动舵机SG90 配置定时器TIM2,TIM3,TIM4的多种重映射模式下的不同IO口 1.使用到的工具介绍 2.整个简单介绍 3.程序的介绍 1.使用到的工具介绍: kei ...

  3. cube 设置滴答定时器_CubeMX配置定时器产生指定个数的脉冲

    1.配置定时器PWM输出 2.配置定时参数并开启中断 3.生成工程并定义一个全局变量来保存要发送脉冲的个数 uint8_t PWMnum; 4.使用库函数封装一个设置脉冲个数并开启PWM输出的函数 v ...

  4. c语言定时器定时1ms程序,STM32 Cubemx 配置定时器定时1mS

    最近才发现原来我把定时器里的配置参数代表的意义给搞混了,这里记录一下,防止以后自己忘记. 以建立一个定时1mS定时器为例: 1.先打开定时器 2.配置好时钟 3.配置定时器设置 重点来了,以前在这里我 ...

  5. STM32学习心得十八:通用定时器基本原理及相关实验代码解读

    记录一下,方便以后翻阅~ 主要内容: 1) 三种定时器分类及区别: 2) 通用定时器特点: 3) 通用定时器工作过程: 4) 实验一:定时器中断实验补充知识及部代码解读: 6) 实验二:定时器PWM输 ...

  6. STM32定时器编码器模式实现直流有刷电机测速(HAL库)

    前言 最近在做一个单片机大作业,要用到直流有刷,在这里把学习编码器的知识记录一下,学习参考资料: 正点原子DMF407电机控制专题教程_V1.0 编码器测速原理 我所使用的编码器是市面上常见的磁电增量 ...

  7. 电机控制基础——定时器编码器模式使用与转速计算

    上篇电机控制基础--定时器捕获单输入脉冲原理介绍了定时器捕获输入脉冲的原理,那种方式是根据捕获的原理,手动切换上升沿与下降沿捕获,计算脉冲宽度的过程原理比较清晰,但编程操作起来比较麻烦. 对于电机测速 ...

  8. STM32学习 3:GPIO管脚配置与第一个STM32实验:LED灯闪烁

    STM32学习 3:GPIO管脚配置与第一个STM32实验:LED灯闪烁 1,GPIO管脚简介与配置 1.1GPIO框图 1.2GPIO不同模式 1.3 GPIO寄存器 1.4 GPIO库函数配置 2 ...

  9. stm32定时器从模式解析

    首先,目前在网上没有找到很多资料,所以在此做一个总结 定时器从模式这里只做三种内部分析 复位模式 门控模式 触发模式 当主定时器的信号出现上升沿或者下降沿时,会触发从定时器的相应动作 复位模式 主定时 ...

  10. STM32Cube工具学习笔记(一)Cube配置

    前几周接触到了STM32CubeMX这个工具,以下简称Cube,先简单介绍一下这个工具吧. STM32CubeMX是ST出的一款免费的开发工具,近几年ST也在一直大力推这个工具,也在推行新的HAL库( ...

最新文章

  1. 英特尔蚕食AMD和NVIDIA?
  2. php制作标记图,PHP使用JPGRAPH制作圆柱图的方法详解
  3. java中Infinity(无限)和NaN
  4. python装饰器-简易版
  5. java disp()_【matlab】输出显示函数 sprintf()disp()
  6. 软件测试——闭着眼睛测试软件
  7. sqlite迁移mysql(导入导出数据)
  8. 三星S7edge番茄花园ROM
  9. 山东省农村信用计算机社考试,山东省农村信用社计算机专业考试题.doc
  10. 秦储一行拜访陕西省文联和陕西新华出版传媒集团
  11. 大数据与人工智能人脸识别
  12. JBoss学习和应用
  13. windows禁用f1按键
  14. php 转换 html code,PHP 将 HTML 代码 转换到 UBB 论坛代码
  15. 一篇文章带你搞定 MongoDB 实现 REST
  16. Mac 下 python 环境问题
  17. 海康威视SDK实例QtDemo显示NVR视频窗口(Linux+Qt)
  18. 矩阵分析L2 线性映射与线性变换
  19. 解密大数据领域岗位职业发展路径
  20. js面试--ajax与性能优化

热门文章

  1. 朋友会触动我们的心灵
  2. 如何使用 Windows 电脑向 Android 设备安装 apk 应用
  3. 2021-2025年中国服装合同制造的物流行业市场供需与战略研究报告
  4. python聊天室设计_Python实现文字聊天室
  5. STM32f407程序移植到GD32F407
  6. MySQL笔记:第11章_数据处理之增删改
  7. 随风轻逝--感悟2005
  8. mysql的填充因子_SQL Server表索引:调整填充因子
  9. python opendr_《网络工程师的Python之路》出书了!
  10. DirectX11 With Windows SDK--28 计算着色器:波浪(水波)