Ich möchte messen, wie lange eine einzelne Funktion auf STM32 dauert. Das einzige, was ich finden konnte, ist SysTick_Handler
. Das ist jedoch eine periodische Unterbrechung, aber was ich brauche, ist Zeitintervall erhalten wie:Wie bekomme ich Zeitintervalle auf STM32?
long t1 = mcu_clock();
sleep(20);
long t2 = mcu_clock();
long diff = (t2 - t1);
Ich habe versucht C clock()
, aber es hat nicht funktioniert und immer -1
zurück. Wie kann ich es schaffen?
Inkrementieren Sie eine Variable im 'SysTick_Handler' und fragen Sie diese Variable ab. –
@BenceKaulics Ist das die einzige Lösung? Es scheint wie ein Workaround. –
Sie müssen einen Timer auf beide Arten einrichten und verfolgen. Am einfachsten ist es, den System-Tick und eine einfache Variable zu verwenden. Die offizielle HAL-Bibliothek von ST macht es auf die gleiche Weise, Beispiel: [stm32F0xx_hal.c] (https://github.com/wemos/Motor_Shield_Firmware/blob/master/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c) –