蓝桥杯嵌入式PWM_IN(打开中断)

文章介绍了如何使用STM32的HAL库配置TIM模块进行IC输入捕获,通过HAL_TIM_IC_CaptureCallback回调函数获取PWM波的周期,并计算其频率。主要涉及的关键函数有HAL_TIM_IC_Start_IT用于启动捕获,HAL_TIM_GetCounter获取计数值,HAL_TIM_SetCounter重置计数器,以及根据捕获到的计数值计算频率的方法。
摘要由CSDN通过智能技术生成

1.原理图

2.配置

3.代码

关键函数

HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1)
HAL_TIM_IC_CaptureCallback(TIM_HandTypeDef *htim)//回调函数
HAL_TIM_GET_COUNTER(&htim3)
__HAL_TIM_SetCounter(&htim3,0)

HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1)
HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1)

int r39=0,r40=0;

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
   if(htim==&htim2)
	 {
	    int temp = __HAL_TIM_GetCounter(&htim2);//temp的值为一秒钟PWM波的次数
		  __HAL_TIM_SetCounter(&htim2,0);
         r40 = 1000000/temp;
//1000000相当于将1秒钟分成1000000份,求得的结果相当于PWM的周期的倒数。假如说一秒钟分成10份,执行一次需要2份,10/2=5,也就是一秒钟可以执行5次,频率为5Hz   
	 }
	 else if(htim==&htim3)
	 {
	    int temp = __HAL_TIM_GetCounter(&htim3);
		  __HAL_TIM_SetCounter(&htim3,0);
         r39 = 1000000/temp;
	 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝本生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值