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


⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。

⏩最近在开发一个STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驱动,包括ADC、UART、RS485、EEPROM(IIC)、FLASH(SPI)等等。

⏩本篇文章对STM32CUBEMX配置STM32CUBEMX配置 定时器中断 和 上升沿中断以实现检测1s以内的脉冲个数做一个详细的教程。

⏩感谢你的阅读,不对的地方欢迎指正。


脉冲捕获

MX配置上升沿检测

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

配置PA3为上升沿中断,下拉

配置中断优先级

MX配置定时器中断


1.定时器配置

我们板子的时钟是550MHZ,分给TIM2的时钟是275MHZ,所以我配的PSC是27500-1,ARR=10000-1.

定时的时间T=2750010000/(550 10^6)=1s,也就是1s中断一次

2.中断配置

中断优先级配置

驱动编写

上升沿中断

加在main.c和it.c都行

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添加

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------定时器输入捕获

相关推荐
lucy153027510791 小时前
【青牛科技】GC5931:工业风扇驱动芯片的卓越替代者
人工智能·科技·单片机·嵌入式硬件·算法·机器学习
scan113 小时前
单片机串口接收状态机STM32
stm32·单片机·串口·51·串口接收
Qingniu0114 小时前
【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302
科技·单片机·嵌入式硬件·实时音视频·安防·工控·储能
Mortal_hhh15 小时前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器
深圳市青牛科技实业有限公司15 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
Mr.谢尔比16 小时前
电赛入门之软件stm32keil+cubemx
stm32·单片机·嵌入式硬件·mcu·信息与通信·信号处理
LightningJie16 小时前
STM32中ARR(自动重装寄存器)为什么要减1
stm32·单片机·嵌入式硬件
鹿屿二向箔17 小时前
STM32外设之SPI的介绍
stm32
西瓜籽@17 小时前
STM32——毕设基于单片机的多功能节能窗控制系统
stm32·单片机·课程设计
远翔调光芯片^1382879887219 小时前
远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
科技·单片机·智能家居·能源