Stm32f4 подсчет импульсов (Как я могу настроить напряжение нарастающего фронта?) - PullRequest
0 голосов
/ 18 апреля 2020

В настоящее время я использую TIM2 на плате обнаружения stm32f4 для подсчета импульсов (нарастающие фронты). Как я могу настроить пороги для нарастающих фронтов? Я хочу считать импульсы 1 В. На данный момент можно просто считать импульсы 2В. Я не могу найти что-то об этом в документации.

Вот код моей функции таймера.

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
}

Большое спасибо заранее за вашу поддержку!

1 Ответ

1 голос
/ 18 апреля 2020

Цифровой вход не может "сработать" при определенном напряжении, установленном уровнем программиста. Но вы можете использовать его в аналоговом режиме, используя ADC режим «аналогового сторожевого таймера».

Если ваш микро имеет встроенный компаратор (у многих STM32Fxxxxs есть один), вы можете использовать его для установки напряжения «триггера» .

...