Ich probiere verschiedene Dinge mit Eingangspins und benutzerdefinierten Timern auf dem STM32F0 aus. Alle Timer-Funktionen sind alternative Funktionen auf den Pins und daher können Sie die Benutzertaste (PC13 auf dem NUCLEO) nicht verwenden, da sie keinen Timer in ihren alternativen Funktionen hat.
Die Frage ist also: Können Sie (in der Software) einen GPIO-Pin-Eingang "simulieren", der hoch geht? Dies würde das Schreiben von Code erleichtern, da Sie das NUCLEO-Testboard, die Header-Drähte usw. nicht anschließen müssen. Ich habe daran gedacht, Bits im IDR-Register von GPIO manuell umzuschalten, aber es ist schreibgeschützt. Und das BSRR-Register wirkt sich nur auf Ausgänge aus. Gibt es eine Möglichkeit, dies zu erreichen?
ST hätte den User Button auf einen anderen Pin mit mehr Funktionen legen sollen...
Danke!
Solange an einen Pin nichts angeschlossen ist und es sich um einen Eingangspin handelt, aktiviert das Setzen der entsprechenden Bits GPIOx_PUPDR
Pullup- oder Pulldown-Widerstände, die den Pin-Zustand direkt beeinflussen. Es wird nicht nur simuliert, dass der Pin hoch oder niedrig geht, sondern die Spannung wird tatsächlich am Pin angezeigt. Der Strom könnte zu schwach sein, um irgendetwas anderes anzutreiben, aber der Pin-Zustand würde sich ändern. Es sollte auch funktionieren, wenn der Pin eine alternative Eingangsfunktion hat , wie den externen Trigger oder den Capture-Eingang eines Timers.
Zum Beispiel Einstellung PA12
( TIM1
externer Trigger) auf hoch
GPIOA->PUPDR=(GPIOA->PUPDR & ~(3 << (2 * 12))) | (1 << 2 * 12);
Den gleichen Pin auf Low setzen
GPIOA->PUPDR=(GPIOA->PUPDR & ~(3 << (2 * 12))) | (2 << 2 * 12);
Können Sie einen GPIO-Eingang auf STM32F0 simulieren?
Das ist das falsche Problem zu lösen. Die eigentliche Frage ist:
Können Sie einen GPIO-Eingang simulieren?
Ja, du kannst. Sie können eine andere Ausführungsumgebung erstellen. Führen Sie die Software beispielsweise auf Ihrem PC aus oder erstellen Sie Scheinobjekte und Peripheriegeräte und führen Sie sie auf Ziel aus.
Das ist zum Teil Softwaretest, zum Beispiel mit Test Driven Development.
Praktisch:
Auf jeder Embedded-Plattform werden Register in einer Header-Datei definiert. Für ST sind dies Strukturen, die in definiert und Peripheriegeräten zugeordnet sind stm32f0xx.h
. Sie können eine modifizierte Header-Datei für Ihre Testumgebung erstellen, in der diese Strukturen nicht auf Peripheriegeräte, sondern auf Speicher abgebildet werden. Auf diese Weise können Sie alles durch einen Test simulieren, den Sie schreiben können.
TIM3_ETR
kann auf PD2
oder abgebildet werden PE2
. Ich stelle TIM3
auf ext. Taktmodus 2 (zum Zählen von ETR
Impulsen) und beide Pins als GPIO-Ausgänge, dann beginnen Sie mit dem Umschalten PD2
und PE2
. Welcher wird gezählt? Wenn ich nun PD2
den AF-Modus einstelle und ein echtes Signal anschließe, würde der Ausgang PE2
immer noch den Timer beeinflussen oder würde die hypothetische Verbindung vom Schmitt-Trigger PE2
zum Timer auf magische Weise verschwinden? Nein, weil es überhaupt nicht da ist, es sei denn, der Stift befindet sich im AF-Modus.
Benutzer105652
Benutzer39382
folgte Monica zu Codidact
Niteesh Shanbog
folgte Monica zu Codidact
ETR
. Wie teste ich es, wenn die Hardware noch nicht da ist?