一、PWM输出
实验步骤
1.配置cubemx
2.PWM.c
#include "tim.h"
#include "PWM.h"
void pwm_Init(void)
{
HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);
}
void pwm_change(int pwm)
{
__HAL_TIM_SetCompare(&htim16,TIM_CHANNEL_1,pwm);
}
3.PWM.h
#ifndef _PWM_H
#define _PWM_H
void pwm_Init(void);
void pwm_change(int pwm);
#endif
二、输入捕获(频率和占空比的测量)
1.原理图
TIM3同配置
IT.c补充函数
int cnt=0;
int cnt1=0;
int frq=0;
int frq1=0;
void HAL_TIM_CaptureCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance==TIM2)
{
cnt=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1);
__HAL_TIM_SetCounter(htim,0);
frq=(80000000/80)/cnt;
HAL_TIM_IC_Start(htim,TIM_CHANNEL_1);
}
if(htim->Instance==TIM3)
{
cnt1=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1);
__HAL_TIM_SetCounter(htim,0);
frq1=(80000000/80)/cnt1;
HAL_TIM_IC_Start(htim,TIM_CHANNEL_1);
}
}
/*frqºÍfrq1ÊDz¶»ñµ½µÄƵÂÊÖµ£¬Ö÷º¯ÊýÒªÓüǵüÓexternµ÷ÓÃ*/
void interrupt_IN_Init(void)
{
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1);
}
IT.h补充
void HAL_TIM_CaptureCallback(TIM_HandleTypeDef *htim);
void interrupt_IN_Init(void);
总结
简单掠过一下pwm和频率检测 占空比待定 没时间完善了只能记录一下,过后有时间来完善