Forum: Mikrocontroller und Digitale Elektronik STM32 HSI startet nicht


von Nucleo (Gast)


Lesenswert?

Guten Abend,

ich habe mir ein Nucleo STM32F303K8T6 Board besorgt und wollte erstmal 
ein paar Pins toggeln.
Ich habe schon ein Paar Projekte mit STM32 umgesetzt und hatte 
diesbezüglich bis jetzt keine Probleme. Ich hatte aber immer einen 
externen Quarz.
Jetzt soll das ganze mit dem internen RC gehen.
Ich habe mir den STM32F30x_Clock_Configurator geschnappt und die
1
system_stm32f30x.c
 generiert. HCLK = 64MHz über HSI und PLL erzeugt.
In CooCox ein neues Projekt angelegt und die Clock-config Datei 
ausgetauscht.
In der main-Schleife einen Pin getoggelt, am Oszi tut sich aber nichts.

Auch wenn ich ganz einfach eine globale Variable anlege und sie in der 
main-Schleife hochzähle, bleibt sie mit STM Studio über st link (swd) 
betrachtet auf dem init. Wert stehen.

Probeweise habe ich auch mit Cube MX den Clock eingestellt, Code 
generieren lassen und das Cube MX Projekt mit dem CooCox Projekt 
verbunden, wie es hier beschrieben ist:
http://sebastianwinter.blogspot.de/2014/09/using-coocox-coide-together-with.html
Compilieren und Flashen hat auf Anhieb funktioniert, doch auch hier 
werden weder Pins getoggelt, noch eine Variable hochgezählt. Variable 
bleibt wieder auf den initialen Wert.

Habt ihr eine Idee woran das liegen könnte?

schönen Abend

von W.S. (Gast)


Lesenswert?

Nucleo schrieb:
> Ich habe mir den STM32F30x_Clock_Configurator geschnappt

ich benutze sowas nicht, sondern schreibe mir das alles selbst. ABer ich 
hätte da noch einen Tip für dich: die Waitstates. wenn ich mich recht 
erinnere, dann ab ca. 24 MHz einen Waitstate, ab 48 MHz zwei davon. 
Sonst geht der Clock-Setup scheinbar gut vonstatten, aber danach 
verschluckt sich die CPU.

W.S.

von Nucleo (Gast)


Lesenswert?

vielen Dank für den Tip, habe es gerade ausprobiert
1
#undef FLASH_LATENCY_0
2
#define FLASH_LATENCY_0 FLASH_LATENCY_2
leider keine Besserung.

von hp-freund (Gast)


Lesenswert?

Hast Du die Ausgabe auf MCO probiert?
Da kannst Du einstellen welcher Takt ausgegeben wird und so Stufe für 
Stufe prüfen.

von Nucleo (Gast)


Lesenswert?

wenn ich den Pin PA8 als MCO einstelle und auf den (HSI / 2) = 4MHz 
ausgebe, sehe ich mit dem Oszi am PA8 kein Signal.
An PF0 dagegen messe ich 8MHz.

von hp-freund (Gast)


Lesenswert?

Nucleo schrieb:
> An PF0 dagegen messe ich 8MHz.

Die kommen auch vom ST-Link.

Die erste Aufgabe ist also den HSI direkt an den PA8 MCO zu bekommen.

von Nucleo (Gast)


Lesenswert?

Vielen Dank für deine Hilfe, habe es heute nicht mehr geschafft, den HSI 
auf PA8 zu legen, es kommt einfach nichts an, bzw. wäre es möglich dass 
der RC gar nicht läuft?
Ich werde mich übermorgen nochmal melden :)

gute Nacht

von hp-freund (Gast)


Lesenswert?

Alle nötigen CLK_ENABLE ausgeführt?

von Nucleo (Gast)


Lesenswert?

hp-freund schrieb:
> Alle nötigen CLK_ENABLE ausgeführt?

das alles wurde mir von CubeMX erzeugt.
CooCox unterstützt diesen uC offiziel nicht und ich habe beim erstellen 
des CooCox Projekts den STM32F303CB statt STM32F303K8T6 gewählt. Es 
werden allerdings alle Dateien bis
1
startup_stm32F30x.S
 von CubeMX erstellt, welcher den F303K8 ja schon unterstützt.
Könnte es daran liegen?

von hp-freund (Gast)


Lesenswert?

Nucleo schrieb:
> STM32F303CB statt STM32F303K8T6

Moin,

von Flash und RAM stimmen die überein.
Ich denke die verschiedenen Gehäuse/Pins hast Du beachtet!?

Was allerdings CooCox noch so macht kann ich nicht sagen, hab ich nie 
benutzt.

Wie sieht es mit einem Einzelschritt Debug aus?
Oder wird ein *.lst File erzeugt?

von W.S. (Gast)


Angehängte Dateien:

Lesenswert?

Nucleo schrieb:
> bzw. wäre es möglich dass
> der RC gar nicht läuft?

Der läuft ab Reset IMMER.

Du mußt allerdings deinen PLL-Eingang auf eben diesen Oszillator 
legen.

Nochwas: Warum bloß hakelst du dich mit all diesem maschinell erzeugten 
Kram (Cube und so) herum? Du weißt doch nie wirklich, was da alles noch 
so an Bugs drinsteckt. Also, ich häng dir mal ne Config.c hier dran. Ist 
zwar für nen anderen Zweck und externen Quarz gedacht, aber die 
Unterschiede zwischen dem STM32F302 und -303 sollten ja nicht riesengroß 
sein.

Verstehendes Lesen wäre da angesagt und ggf. umschreiben+benutzen

W.S.

von Nucleo (Gast)


Angehängte Dateien:

Lesenswert?

hp-freund schrieb:
> Ich denke die verschiedenen Gehäuse/Pins hast Du beachtet!?

in CubeMX habe ich den 32Pin STM32F303K8T6 genommen, im CooCox gab es 
keinen 32Pin. Alle F303 haben dort mindestens 48Pins, aber solange ich 
nicht auf nicht-existierende Pins zugreife, sollte es keinen Unterschied 
machen oder?

Wenn ich gleich am Anfang des Programms einen Breakpoint setze und auf 
Einzelschrittdebug gehe, verbindet sich der ST Link (grün-rote LED 
blinkt), CooCox macht ein leeres Fenster auf und sagt
1
No source available for ""
 und das Programm startet nicht

hp-freund schrieb:
> wird ein *.lst File erzeugt?

Nein, leider nicht. Im Anhang ist mein CooCox Projekt mit einer Simplen 
Variable, die hochgezählt werden soll. Kein CubeMX, nur die Clock 
Konfiguration habe ich vom STM32F30x_Clock_Configurator erzeugen lassen 
und in stm32F30x.h die Zeile
1
#define STM32F303x8
 uncommented.
Allerdings wird es nicht viel nutzen wenn du noch nie CooCox benutzt 
hast.

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
Noch kein Account? Hier anmelden.