TIM输入捕获的流程配置思路:
- 配置总线时钟
- 配置GPIO端口引脚
- 配置TIM定时器时基
- 配置NVIC中断
- 配置IC输入捕获模式
如果只采集PMW脉冲的频率,那么只需要使用单通道采集上升沿(或下降沿)信号,就可以求得频率值。(两次高电平或两次低电平之间的时间值,就可以计算出PWM的频率)。如果不仅需要采集PWM频率,还要采集PWM的占空比,那么需要同时采集上升沿和下降沿信号。
采集PWM脉冲频率及占空比数据可以使用单通道采集,也可以使用双通道采集。本文讲解单通道采集PWM频率+占空比,即采集一个周期内的 2次上升沿+1次下降沿或2次下降沿+1次上升沿。
在将计数器counter period的值,也就是自动重装载值ARR拉满时(0~0xFFFF),修改配置预分频PSC的值可以调整定时器的定时时间t。
2、HAL库版TIM输入捕获
配置PA7为脉冲捕捉引脚,TIM3_CH2
在STM32CubeMX中配置步骤如下:
生成了代码工程代码后,在其回调函数中,进行读取PWM输入捕获计数值,以进行频率+占空比计算操作。
HAL库TIM中断回调函数:
volatile float TIM3CH2_Freq = 0.0;
volatile float TIM3CH2_Duty = 0.0;
volatile int capture_end_flag = 0;
volatile uint32_t high_val = 0;
volatile uint32_t low_val = 0;
//TIM单通道采集PWM频率+占空比
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
static uint8_t capture_cnt = 1; //电平捕捉计数
if(htim->Instance == TIM3) //判断是否由定时器3产生
{
if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) //TIM3 通道2
{
if(capture_