【蓝桥杯嵌入式笔记】(十七)双路捕获占空比

一、原理图

9a8abbc7fa5103dc0c8a90471be53f45.png

PA6 PA7

二、CubeMX配置

选用引脚开启定时器通道

开启内部时钟,开启输入捕获,预分频选择80-1,这里通道1为直接所以选TI1FP1

fc29404fbdbd6e02595789e7aca466a9.png

开启中断

eeedf748444ee762a15c72eb5d165a3f.png

e81f9d830492d955383e5c37bd2f02e0.png

间接通道开启下降沿

305502d874585a34ce052c3daa347e38.png

注意:配置完成后,将MX_TIM3_Init();函数找到,移植到我们的主函数改名字void MX_TIM3_PA6_Init(void)。然后注释//MX_TIM3_Init();

再次回到CubeMX取消PA6的配置,开始按上示步骤配置PA7。

三、代码

查找PA7,在tim.h里面

0b0294dfc05e8d5511ddfa68790ba06b.png

void pwm_pro()
{
	MX_TIM3_PA6_Init();
	HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1);
	HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_2);
	HAL_Delay(50);
	HAL_TIM_IC_Stop_IT(&htim3,TIM_CHANNEL_1);
	HAL_TIM_IC_Stop_IT(&htim3,TIM_CHANNEL_2);
	duty1=cnt2*1.0/cnt1;
	frq1=1000000/cnt1;
    MX_TIM3_PA7_Init();
	HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1);
	HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_2);
	HAL_Delay(50);
	HAL_TIM_IC_Stop_IT(&htim3,TIM_CHANNEL_1);
	HAL_TIM_IC_Stop_IT(&htim3,TIM_CHANNEL_2);
	duty2=cnt1*1.0/cnt2;	
	frq2=1000000/cnt2;
}

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance==TIM3)
	{
	  if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1)
			cnt1=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_1);
	  else if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_2)
			cnt2=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_2);
	
	}

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值