Verwenden Sie stopwatch_delay(ticks
) unten, um Ihre Verzögerungen zu erreichen. Es verwendet das DWT_CYCCNT-Register des STM32, das speziell zum Zählen tatsächlicher Takt-Ticks entworfen wurde und sich an der Adresse 0xE0001004 befindet.
Um die Genauigkeit der Verzögerung zu überprüfen (siehe main
), können Sie STOPWATCH_START
aufrufen, stopwatch_delay(ticks)
ausführen, dann STOPWATCH_STOP
aufrufen und mit CalcNanosecondsFromStopwatch(m_nStart, m_nStop)
überprüfen. Passen Sie ticks
nach Bedarf an.
Die erste von Stm32f2 gefundene Spezifikation geht von einer Taktfrequenz von 120 MHz aus. Das ist ungefähr 8ns pro Taktzyklus. Sie würden etwa drei Einzelzyklusbefehle zwischen aufeinanderfolgenden Schreib- oder Lese- / Schreiboperationen benötigen. In C wird a++;
wahrscheinlich tun (wenn sich a im Stapel befindet).
Sie sollten in das FSMC-Peripheriegerät Ihres Chips schauen. Während die Konfiguration kompliziert sein kann, insbesondere wenn Sie nicht in einen Speicherbereich fallen, für den sie entworfen wurde, stellen Sie möglicherweise fest, dass Ihr parallelgeschaltetes Gerät ziemlich gut mit einem der Speicherschnittstellenmodi übereinstimmt.
Diese Arten von externen Speicher-Controllern müssen eine Reihe von konfigurierbaren Timing-Optionen haben, um den Bereich der verschiedenen Speicherchips zu unterstützen, so dass Sie in der Lage sind, die Timings Ihres Datenblattes zu garantieren.
Der schöne Vorteil, dies zu können, ist, dass Ihr LCD-Bildschirm dann wie ein altes Speicher-zugeordnetes Peripheriegerät aussieht und die untergeordneten Schnittstellen-Details abstrahiert.