Stm32f4 counting pulses (How can I adjust the rising edge voltage ?)

0

At the moment I use TIM2 on the stm32f4 - Discovery Board to count pulses (rising edges). How can I adjust the thresholds for the rising edges ? I want to count 1 V pulses. At the moment it is just possible to count 2V pulses. I'm not able to find something about this in the documentation.

Here is the code of my timer function.

void timer_2_pulse_counter_gpioa1_Init(){
    RCC->AHB1ENR |= 0x01; // 1: IO port A clock enabled
    //RCC->AHB1ENR |= 0x10; // 1: IO port E clock enabled

    // APB1 peripheral reset register
    RCC->APB1ENR |= 0x01; // 1: enable TIM2

    // GPIO port mode register (GPIOx_MODER)
    GPIOA->MODER |= 0x00000008; // 10: Alternate function mode PA1 => AF mode
    GPIOA->AFR[0] |= 0x00000010; // 1000: Must refer to AF1 (alternate function for TIM1/ TIm2)
    GPIOA->PUPDR |= 0x00000008; // Sets pull down resistor for PA1

    // CCMR!: capture/compare mode register 1
    TIM2->CCMR1 |= 0x0100; // CC2 channel is configured as input, IC2 is mapped on TI2

    // SMCR: Slave Mode control register
    TIM2->SMCR |= 0x0007; // Bits[2:0]  111: External Clock Mode 1 - Rising edges of the selected trigger clock the counter.
    TIM2->SMCR |= 0x0060; // Bits[6:4] 110: selected Trigger: Filtered Timer Input 2 (TI2FP2)

    TIM2->ARR = 0xFFFF; // Set the timer reset on the highest possible value

    TIM2->CR1 |= 0x0001; //0001 Enable Timer
}

Many thanks in advance for your support!

timer
stm32
stm32f4discovery
asked on Stack Overflow Apr 18, 2020 by max_keller

1 Answer

1

Digital input cannot "trigger" at particular voltage set by the programmers level. But you can use it in the analog mode using ADC "analogue watchdog" mode.

If your micro has a built in comparator (many STM32Fxxxxs have one) you can use it to set the "trigger" voltage.

answered on Stack Overflow Apr 18, 2020 by 0___________ • edited Apr 20, 2020 by 0___________

User contributions licensed under CC BY-SA 3.0