STM32 probleme mit SysTick / VectorTable

Gast #2125718
Lesenswert?

Hallo,
ich versuch gerade eine LED im interval von 1s mit hilfe des SysTick 
Interrupt blinken zu lassen. Leider leuchtet die LED dauerhaft und ich 
weis nicht warum. Allerdings bin ich auch noch totaler Anfänger, hab 
heute Nachmittag überhaupt zum ersten mal ein funktionstüchtiges 
Programm mit eigenem Linker Script kompiliert. Wäre nett, wenn mal 
jemand über mein Projekt drüber schauen könnte. Ist auch nicht viel. ^_^
Angehängte Dateien:
#2127244
Lesenswert?

Mir sind schonmal 2 wichtige Sachen aufgefallen:

> 1. SysTick_Config(72000000/1000);
für 1ms Interrupts

> 2. extern volatile unsigned int g_uiSysTickCounter;
Voltatile, weil diese Variable von der Hardware verändert wird, und 
deshalb immer wieder neu aus dem RAM nachgeladen werden muss.
Stichwort "Speicherklassen-Spezifizierer".

Zwecks linker Skript kann Ich nichts sagen. Ich benutze "Atollic True 
Studio STM32 light" . Da braucht man sich nicht darum kümmern.

mfg
Gast #2127268
Lesenswert?

Erstmal danke für die Tips.
Es läuft jetzt.
Scheinbar sind 72000000 zu viel für die Initialisierung des SysTick.
Ich hätte mich wohl nach einer ruhe pause noch mal ran setzen soll, 
statt euch gleich zu belästigen ^_^'

@A.K.
was wäre denn besser gewesen?
Hätte ich den kompletten Code hier rein kopieren sollen, oder bevorzugt 
ihr einfach ein anderes Archivformat?
Gast #2127321
Lesenswert?

Philipp schrieb:
> was wäre denn besser gewesen?
> Hätte ich den kompletten Code hier rein kopieren sollen, oder bevorzugt
> ihr einfach ein anderes Archivformat?

Kommt drauf an, was alles in Deinem rar drin ist :-)

Am besten ist es immer, ein minimalst mögliches noch das Problem habende 
Beispiel herbeizuschrumpfen. Wenn es dann nur noch ein paar Zeilen sind, 
kann man es sehr schön als Quelltext formatiert (siehe 
http://www.mikrocontroller.net/articles/Formatierung_im_Forum) direkt in 
den Post schreiben. Bei etwas längeren Sachen als normale Anlage. Bei 
Archiven wird dann ganz eklig; da hat jeder was anderes auf seinem 
Rechner mit seiner Architektur.
Gast #2127405
Lesenswert?

>Das stimmt zwar, aber mit .zip kommt so ziemlich jeder klar.

Wenn man den Explorer benutzt vieleicht. Es gibt genügend
Tools die den Explorer ersetzen und mit RAR, ZIP, TGZ, BZ
, LHA oder sonst was überhaupt keine Probleme haben.

Freecommander, Totalcommander. Doppelklick auf das Archiv
und schon kann man da reinsehen wie in jedes normale
Verzeichnis. Entpacken geht schlicht über "kopieren".
Gast #2127512
Lesenswert?

Schön, daß Du Du Deine Festplatte mit allen Möglichen Tools zugemüllt 
hast.
Fakt ist aber, das weder jedes Tool jedes Archiveformat öffnen kann, 
noch das jedes Tool auf jedem Betriebssystem zur Verfügung steht. Und 
.zip ist nun mal mehr oder weniger der kleinste gemeinsame Nenner.
#2127526
Lesenswert?

Philipp schrieb:

> Hätte ich den kompletten Code hier rein kopieren sollen, oder bevorzugt
> ihr einfach ein anderes Archivformat?

ZIP kann jeder. RAR nicht. Natürlich kann man dafür irgendwelchen Kram 
installieren - aber jeder der das nicht getan hat ist ein potentieller 
Helfer weniger. Soll heissen: Nicht ich habe ein Problem damit, dass 
ich mit RAR mehr Aufwand habe als ich meist zu investieren bereit bin. 
Eher du.
Gast #2127557
Lesenswert?

>Schön, daß Du Du Deine Festplatte mit allen Möglichen Tools zugemüllt
>hast.

Nö, nur eins. Totalcommander. Packt fast alles aus und ein.
Ist so ein nettes Tool ala Norton Commander. Kann aber noch
unendlich viel mehr.

>Fakt ist aber, das weder jedes Tool jedes Archiveformat öffnen kann,
>noch das jedes Tool auf jedem Betriebssystem zur Verfügung steht. Und
>.zip ist nun mal mehr oder weniger der kleinste gemeinsame Nenner.

Lächerlich. Sagt mal in was für einer beschränkten Welt
lebt ihr eigentlich? Wenn ich was im Internet finde das nicht
ZIP ist, und ich unbedingt wissen will was da drin ist, soll
ich dann erstmal den Ersteller des Archivs kontaktieren und
darum bitten mir bitteschön ein ZIP zu schicken?

Wie schön das ich nicht so engstirnig bin wie einige hier.
Ich habe nähmlich keine Lust zu warten.

Ihr habt sie echt nicht alle;)
Persönliche Seite #2127819
Lesenswert?

Philipp schrieb:
> Leider leuchtet die LED dauerhaft und ich weis nicht warum.

Nachdem ich schier unbeschreibliche Mühen auf mich genommen habe, das
Archiv zu entpacken, kann ich als Fehlerursache nur schließen: Das
Übliche -- volatile vergessen.
1
while(1)
2
{
3
  if(g_uiSysTickCounter == 0)
4
    GPIOB->BSRR = GPIO_Pin_5;
5
  else
6
    GPIOB->BRR = GPIO_Pin_5;
7
}
Der Compiler kann nicht erkennen, dass g_uiSysTickCounter jemals
seinen Wert ändert und wird einen der beiden Zweige verwerfen.

> Allerdings bin ich auch noch totaler Anfänger

C Buch besorgen, oder vom Chef eine Weiterbildungsmaßnahme bezahlen 
lassen.

Gruß
Marcus
Gast #2129679
Lesenswert?

> Nachdem ich schier unbeschreibliche Mühen auf mich genommen habe, das
> Archiv zu entpacken, kann ich als Fehlerursache nur schließen: Das
> Übliche -- volatile vergessen.

Nee, das war nicht der Fehler hat auch ohne funktioniert... aber 
natürlich ist man mit volatile auf der sicheren Seite.
Wie ich weiter oben schon geschrieben habe, ist die Initialisierung 
immer fehlgeschlagen.

is rar wirklich so exotisch? o.o

> C Buch besorgen, oder vom Chef eine Weiterbildungsmaßnahme bezahlen
> lassen.

C ist für mich eigentlich kein Problem...Ich Programmiere schon seit 
Jahren in C++, nur bei Mikrocontrollern bin ich noch recht neu.
Und als Lehrling zum EGS im zweiten Jahr bezahlt mir mein Chef bestimmt 
keinen Lehrgang in dem Bereich T_T
Persönliche Seite #2129749
Lesenswert?

Philipp schrieb:
>> Nachdem ich schier unbeschreibliche Mühen auf mich genommen habe, das
>> Archiv zu entpacken, kann ich als Fehlerursache nur schließen: Das
>> Übliche -- volatile vergessen.
>
> Nee, das war nicht der Fehler hat auch ohne funktioniert... aber
> natürlich ist man mit volatile auf der sicheren Seite.
> Wie ich weiter oben schon geschrieben habe, ist die Initialisierung
> immer fehlgeschlagen.

Den Beitrag muss ich in der Menge der Flames übersehen haben... Dass das 
ohne volatile funktioniert haben soll muss allerdings auf geringe 
Optimierung zurückzuführen sein.

> is rar wirklich so exotisch? o.o

So ziemlich jedes vernünftige Packprogramm kann heutzutage damit 
umgehen. Vermutlich hätte ich Ironie-Tags verwenden sollen...

Gruß
Marcus

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