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. ^_^
Erstens ist eine halbe Stunde bischen knapp, zumal du grad in einer wenig frequentieren Zeit liegst. Zweitens sind (nicht nur) mir RARs zu umständlich.
>Erstens ist eine halbe Stunde bischen knapp,
24 Stunden und 30 Minuten;)
Schaue das Systick-Demo von ST an, das sind doch eigentlich nur eine Hand voll Zeile für deren Initialisierung.
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
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?
@David R. Oh, das mit volatile is 'n guter Tipp. das vergesse ich immer wieder ^_^' Danke!
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.
Lutz schrieb: > Bei Archiven wird dann ganz eklig; da hat jeder was anderes > auf seinem Rechner mit seiner Architektur. Das stimmt zwar, aber mit .zip kommt so ziemlich jeder klar.
>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".
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.
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.
>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;)
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
> 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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.