Quiero contar los pulsos generados por Picoscope, mi frecuencia de señal es (20Hz)
Usé el timer2, el problema es que el contador se incrementa a 1 y vuelve a 0, no entiendo por qué. ya que debe incrementarse cada 50ms.
Desarrolléelcódigoquesemuestraacontinuación:
#include"stm32f4xx.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_tim.h"
void GPIO_Init_TM(void);
int variable = 0;
int main(void)
{
GPIO_Init_TM();
while(1)
{
variable = TIM_GetCounter(TIM2);
}
}
void GPIO_Init_TM(void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
GPIO_InitTypeDef gpioStructure;
//TIM_TimeBaseInitTypeDef timerInitStructure;
gpioStructure.GPIO_Pin = GPIO_Pin_15 ;
gpioStructure.GPIO_Mode = GPIO_Mode_AF;
gpioStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &gpioStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource15, GPIO_AF_TIM2);
TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI1,TIM_ICPolarity_Rising, TIM_ICPolarity_Rising );
TIM_SetAutoreload (TIM2, 0xffff);
TIM_Cmd(TIM2, ENABLE);
}
y este es el resultado que obtengo: