当前位置:首页 > 单片机 > 单片机
[导读]利用STM32的PWM输入捕获功能,可以测方波的占空比和(或)频率使用时将相应的输入配置为对应定时器对应的复用功能,外部待测量波形从该引脚输入再配置定时器输入捕获功能相应参数,选择主从模式,最后打开中断或者DMA读

利用STM32的PWM输入捕获功能,可以测方波的占空比和(或)频率

使用时将相应的输入配置为对应定时器对应的复用功能,外部待测量波形从该引脚输入

再配置定时器输入捕获功能相应参数,选择主从模式,最后打开中断或者DMA读取测量数据

1. Enable TIM clock

2. Configure the TIM pins by configuring the corresponding GPIO pins

3. Fill the TIM_ICInitStruct

5. Call TIM_ICInit(TIMx, &TIM_ICInitStruct) ;. Call TIM_PWMIConfig(TIMx, &TIM_ICInitStruct) ;

6. Enable the NVIC or the DMA to read the measured frequency.

7. Enable the corresponding interrupt (or DMA request) to read the Captured value

8. Configure the slave mode controller in reset mode

9. Call the TIM_Cmd(ENABLE) function to enable the TIM counter.

10. Use TIM_GetCapturex(TIMx); to read the captured value.

代码:

#ifndef __PWM_INPUT_H

#define __PWM_INPUT_H

#include "main.h"

#define PWM_INPUT_TIM TIM3

#define PWM_INPUT_TIM_CLK RCC_APB1Periph_TIM3

#define PWM_INPUT_CHANNEL TIM_Channel_2

#define PWM_INPUT_PIN GPIO_Pin_4

#define PWM_INPUT_PORT GPIOA

#define PWM_INPUT_GPIOCLK RCC_AHBPeriph_GPIOA

#define PWM_INPUT_GPIOAF GPIO_AF_2

#define PWM_INPUT_PINSOURCE GPIO_PinSource4

void PWM_INPUT_Config(void);

void TIM3_IRQHandler(void);

#endif

//========================================================/

#include "PWM_Input.h"

volatile uint16_t IC2Value = 0;

volatile uint16_t DutyCycle = 0;

volatile uint32_t Frequency = 0;

void PWM_INPUT_Config(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

TIM_ICInitTypeDef TIM_ICInitStructure;


RCC_AHBPeriphClockCmd(PWM_INPUT_GPIOCLK,ENABLE);

RCC_APB1PeriphClockCmd(PWM_INPUT_TIM_CLK,ENABLE);


GPIO_InitStructure.GPIO_Pin = PWM_INPUT_PIN;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

GPIO_Init(PWM_INPUT_PORT, &GPIO_InitStructure);

GPIO_PinAFConfig(PWM_INPUT_PORT, PWM_INPUT_PINSOURCE, PWM_INPUT_GPIOAF);


NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);


TIM_ICInitStructure.TIM_Channel=PWM_INPUT_CHANNEL;

TIM_ICInitStructure.TIM_ICFilter=0x0;

TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;

TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;

TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;

TIM_PWMIConfig(PWM_INPUT_TIM,&TIM_ICInitStructure);

TIM_SelectInputTrigger(PWM_INPUT_TIM,TIM_TS_TI2FP2);

TIM_SelectSlaveMode(PWM_INPUT_TIM,TIM_SlaveMode_Reset);

TIM_SelectMasterSlaveMode(PWM_INPUT_TIM,TIM_MasterSlaveMode_Enable);

TIM_Cmd(PWM_INPUT_TIM,ENABLE);

TIM_ITConfig(PWM_INPUT_TIM,TIM_IT_CC2,ENABLE);

}

void TIM3_IRQHandler(void)

{

TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);

IC2Value = TIM_GetCapture2(TIM3);

if (IC2Value != 0)

{

DutyCycle = (TIM_GetCapture1(TIM3) * 100) / IC2Value;

Frequency = 72000000 / IC2Value;

}

else

{

DutyCycle = 0;

Frequency = 0;

}

// printf("DutyCycle= %dn",DutyCycle);

// printf("Frequency= %dn",Frequency);

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在这篇文章中,小编将对pwm的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: pwm 脉冲宽度调制

在下述的内容中,小编将会对PWM控制器的相关消息予以报道,如果PWM控制器是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: pwm 控制器 pwm控制器

在下述的内容中,小编将会对PWM的相关消息予以报道,如果PWM是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: pwm 变换器

在这篇文章中,小编将为大家带来PWM变换器的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: pwm 变换器 pwm变换器

pwm控制器将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对pwm控制器的相关情况以及信息有所认识和了解,详细内容如下。

关键字: pwm 控制器 mppt

今天,小编将在这篇文章中为大家带来pwm控制器的有关报道,通过阅读这篇文章,大家可以对pwm控制器具备清晰的认识,主要内容如下。

关键字: pwm 控制器 mppt

CPU风扇转速调节很很多方法,其中有一种就是设置PWM斜率值,这是一种脉冲宽度调制方法,该操作需要在UEFI BIOS中设置,若是用户并未使用过PWM值,可以看看下文了解主板风扇PWM调速设置过程。

关键字: pwm 调节

随着电子技术的发展,出现了多种PWM技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等,而在镍氢电池智能充电器中采用的脉宽PWM法,它是把每一脉冲宽度均相等的脉冲列作为PWM波形,...

关键字: pwm 解析

PWM调光是什么

关键字: pwm 正弦半波

脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

关键字: pwm 解析
关闭
关闭