Softwaretimer STM32

OP #1079465
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);
Gast #1079965
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...
Persönliche Seite #1084847
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
Gast #1681104
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren