mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Softwaretimer STM32


Autor: Dirk Plewka (dilip01)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin noch recht neu beim Programmieren des STM32. Nachdem ich es 
endlich geschafft hatte den STM32 überhaupt mit der IDE von Rowley ans 
Laufen zu bekommen, stehe ich nun vor dem Problem einen einfachen 
Software-Timer zu implementieren. Ich habe es hinbekommen, dass ich 
einen Timer anlegen kann und bekomme auch einen Update-Interrupt, aber 
irgendwie kann ich die Zeit nicht beeinflussen, mit der der Timer läuft. 
Mein Ziel ist es einen 100µs-Timer zu bekommen. Hier ist mal der 
bisherige Codeausschnitt. Vielleicht kann mir ja jemand helfen.

  TIM_DeInit(TIM1);
  TIM_TimeBaseStructure.TIM_Period = (72000000 / 10000) - 1;
  TIM_TimeBaseStructure.TIM_Prescaler = 0;
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV2;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Down;
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

  TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);


  TIM_Cmd(TIM1, ENABLE);

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dazu gibts eigentlich den SysTick-Timer. Der ist in der Cortex-CPU 
bereits integriert. Einen ecten Timer dazu misbrauchen ist zwar machbar, 
aber viel zu kompliziert und verschwenderisch.

Siehe FW-Lib, da gibts ein Demo "SysTick".
Siehe Befehle wie:
  SysTick_SetReload(9000); // 9MHz (HCLK/8, default)
  SysTick_ITConfig(ENABLE);

und Interrupt:
void SysTickHandler(void)
{
//...;
}

Mehr Dateil steht in der Core Beschreibung von www.arm.com

PS: Mit dem Systick-Counter kann sogar die Anzahl der ausgeführten 
Befehle gezählt werden. Aber das war ja hier nicht die Frage...

Autor: Dirk Plewka (dilip01)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, Super. Genau das habe ich gesucht. Danke.

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus wrote:
> Mit dem Systick-Counter kann sogar die Anzahl der ausgeführten
> Befehle gezählt werden.

Nimmt man dafür nicht eher den PC sampler in der DWT unit?

Gruß
Marcus
http://www.doulos.com/arm

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe Forum STM:

http://www.st.com/mcu/forums-cat-6943-23.html&start=10

Da gibts Beispiel und Beschreibung wie mans macht.

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus wrote:
> Siehe Forum STM:
> [...]
> Da gibts Beispiel und Beschreibung wie mans macht.

Ach so. Das ist ja nur ein einfacher Zyklenzähler (Zyklen != Befehle). 
Ich dachte, Du meintest irgendeine spezielle Eigenschaft des SysTick 
counters.

Aber mein Hinweis auf den PC Sampler (DWT_PCSR) war natürlich auch nicht 
ganz richtig. Man müsste sich was aus den DWT_*CNT Registern 
zusammenbauen.

Gruß
Marcus
http://www.doulos.com/arm

Autor: Eddy Archer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, der Thread ist schon etwas älter, ich habe trotzdem noch einen 
Gedanken dazu:
Was ist aber, wenn der SysTick schon vom FreeRTOS geklemmt wird? klar 
könnte man sich 'ne Meta-Ebene einziehen und den SysTick interrupt für 
beide Probleme verwenden, ich persönlich fände es jedoch besser dafür 
dann einen eigenen Timer zu verwenden.

Gr. Eddy

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu benötigst du einen separaten Software-Timer in einem RTOS???

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.