STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数)

这篇具有很好参考价值的文章主要介绍了STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

————————————————————————————————————
⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。
⏩最近在开发一个STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驱动,包括ADC、UART、RS485、EEPROM(IIC)、FLASH(SPI)等等。
⏩本篇文章对STM32CUBEMX配置STM32CUBEMX配置 定时器中断 和 上升沿中断以实现检测1s以内的脉冲个数做一个详细的教程。
⏩感谢你的阅读,不对的地方欢迎指正。
————————————————————————————————————

MX配置上升沿检测

我这里配置PA3为GPIO中断模式

STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数),STM32CEBUMX,stm32,单片机,嵌入式硬件
配置PA3为上升沿中断,下拉
STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数),STM32CEBUMX,stm32,单片机,嵌入式硬件
配置中断优先级
STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数),STM32CEBUMX,stm32,单片机,嵌入式硬件

MX配置定时器中断

STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数),STM32CEBUMX,stm32,单片机,嵌入式硬件
1.定时器配置
我们板子的时钟是550MHZ,分给TIM2的时钟是275MHZ,所以我配的PSC是27500-1,ARR=10000-1.
定时的时间T=2750010000/(55010^6)=1s,也就是1s中断一次
STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数),STM32CEBUMX,stm32,单片机,嵌入式硬件
2.中断配置
STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数),STM32CEBUMX,stm32,单片机,嵌入式硬件
中断优先级配置
STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数),STM32CEBUMX,stm32,单片机,嵌入式硬件

驱动编写

上升沿中断

加在main.c和it.c都行

unsigned int Nums_Rising = 0;//脉冲个数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == GPIO_PIN_3)
	{
//		GPIO_PinState pinState = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_3);
			Nums_Rising++;
		__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);

	}
}

定时器中断

main.c添加

extern unsigned int Nums_Rising;//1s内脉冲个数
/******************************************************************************
 * @ 函数名  : HAL_TIM_PeriodElapsedCallback
 * @ 功  能  : 定时器超时中断回调函数
 * @ 参  数  : htim 定时器名 
 * @ 返回值  : 无
 ******************************************************************************/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	 static unsigned int i = -1,nums_pulse[10],counts = 0;
	 static double sums = 0.0;
	 double aver_pulse = 0.0;
   if(htim->Instance == TIM2)                  
   {
		 if(counts < 10)counts++;
		 else sums -= nums_pulse[i];			 
		 sums += Nums_Rising;
		 nums_pulse[i] = Nums_Rising;
		 aver_pulse = sums / (counts * 1.0);
		 printf("Counts_Rate = %.2f Hz\r\n",aver_pulse);//打印脉冲个数
     HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_10); //对PB5进行翻转
		 Nums_Rising = 0;
		 i = (i + 1) % 10;
   }
}

顺便还实现了一个滑动窗口滤波。
最后能测量脉冲的范围是0.1hz~4Mhz,在这个范围误差小于1%。

参考

STM32CubeMX——定时器输入捕获文章来源地址https://www.toymoban.com/news/detail-605268.html

到了这里,关于STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32CubeMX——定时器配置

    本文将会以STM32F103C8T6为例配置定时器2定时5 ms SMT32F1系列共有8个定时器: 基本定时器(TIM6、TIM7) 通用定时器(TIM2、TIM3、TIM4、TIM5) 高级定时器(TIM1、TIM8) 16位向上、向下、向上/下自动装载计数器 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为 1~6553

    2023年04月10日
    浏览(27)
  • 2.基于正点原子STM32F103的定时器中断实验(HAL库实现)(cubeMX)

      基本上每一款MCU都会配备定时器这个外设,STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。 同样,STM32F1系列的定时器功能也很强大,包括: TIM1和TIM8两个高级定时器; TIM2~TIM5是个通用寄存器; TIM7,TIM8,两个基本定时器。 由于本次实验适用于新手入门

    2023年04月26日
    浏览(139)
  • STM32 HAL库 通用定时器介绍及相关应用例程 定时器中断 输出PWM (点亮LED呼吸灯、输出PWM、输入捕获) CubeMX

    (部分图引自于ATK) 前情提要(基本定时器) 点此进入 通用定时器类别 通用定时器和基本定时器相比大致的工作方式是相似的,不过通用定时器比基本定时器多了一些很好用的功能,比如: 外部输入捕获 输出比较 输出PWM 时钟源 CubeMX为我们提供了配置时钟的非常方便的工

    2024年04月15日
    浏览(49)
  • STM32CubeMX学习四 之定时器配置

    记录一下STM32CubeMX的学习笔记,同时分享给初学的小白,希望一起进步。 如何使用STM32CubeMX以及工程创建在之前的博客有提到,这里就直接从定时器讲起。 编译环境:KEIL 代码生成:STM32CubeMX 库:HAL MCU:STM32F072 假设你的cubeMX工程已经建好,这里我们开始配置定时器2(TIM2),

    2024年02月01日
    浏览(20)
  • STM32开发(10)----CubeMX配置基本定时器

    本章介绍使用STM32CubeMX对基本定时器进行配置的方法,STM32F103高性能系列设备包括基本定时器、高级控制定时器、通用定时器、看门狗定时器和 SysTick 定时器,但是STM32F103C6t6上资源比较有限(高级定时器TIM1,通用定时器TIM2和TIM3),没有真正的基本定时器,其实通用定时器和

    2024年02月16日
    浏览(37)
  • 基于STM32CUBEMX驱动低压步进器电机驱动器STSPIN220(3)----定时器中断产生指定数量脉冲

    在步进电机控制过程中,为了实现精确的位置和速度控制,经常需要输出指定数量的脉冲。这就需要使用定时器功能来生成PWM脉冲信号。本文将详细介绍如何利用STM32CUBEMX配置定时器以输出指定数量的PWM脉冲。 定时器是STM32微控制器的一个重要功能模块,可用于生成各种定时

    2024年02月14日
    浏览(20)
  • STM32使用CubeMx配置定时器输出PWM

            项目中经常使用到STM32来输出PWM,每次配置过后过不了多久就会忘记,稍微需要对配置做出修改时都要翻很久的手册,所以决定结合实例把PWM配置的详细步骤记录下来,这样在下次配置时可以很快的捡起来。         本文档的行文结构如下,首先,说明实际需

    2024年02月03日
    浏览(34)
  • 搭建stm32电机控制代码框架(二)——Stm32CubeMx配置定时器

    搭建了基础的环境,配置了一个简单的工程后,CubeMx的基本操作就会了。然后基于这个操作往下推进,开始对关键模块定时器的攻略,这个部分需要先熟悉一下Stm32的定时器基本原理。 《STM32参考手册》中仅对定时器的介绍就已经占了100多页,这里就不一一展开,挑一些关键

    2024年02月06日
    浏览(49)
  • STM32高级定时器输出指定数量PWM(STM32CubeMx配置)

    高级定时器中有一个重复计数器,本实验输出指定个数PWM就是利用了重复计数器的特性,先来看看重复计数器的特性是什么: 计数器每次上溢或下溢都能使重复计数器减1,减到0时,再发生一次溢出就会产生更新事件 这是什么意思呢,这里举个例子比如说我设定重复计数器的

    2024年02月02日
    浏览(41)
  • STM32F系列项目定时器配置-中断触发源详解

    1.以高级定时器为例:  2.触发源选择与极性选择:   3.触发源介绍 (282条消息) 【STM32技巧】(1)STM32定时器8种触发源之ITR0~ITR3说明_stm32 定时器触发定时器_小石头有大内涵的博客-CSDN博客 ITR0 内部触发0 ITR1 内部触发1 ITR2 内部触发2 ITR3 内部触发3 ITR3  

    2024年02月11日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包