Forum: Mikrocontroller und Digitale Elektronik Probleme beim Debuggen mit SW4STM32 und und F7Disco


von J. T. (chaoskind)


Lesenswert?

MoinMoin,

ich spiele seit einiger Zeit wieder mit meinem STM32F746g-Discoveryboard 
rum.

Von einem Tag auf den anderen zeigt meine Entwicklungsumgebung beim 
Debuggen nicht mehr die Werte der Variablen an. Ich stecke in einer 
Schleife, der Zählwert soll bei jedem Durchlauf um einen erhöht werden. 
Jedoch wird die Variable immer mit 0 angezeigt, obwohl die Schleife auch 
nach der richtigen Anzahl von Durchläufen beendet wird. Optimierungen 
sind komplett ausgeschaltet.

Ein weiteres Problem das aufgetaucht ist, ist dass der µc scheinbar sein 
Programm vergisst. Aber nur scheinbar. Ich starte eine Debugsession, der 
Controller wird zum Beginn selbiger geflasht und die Session läuft, bis 
auf die nicht angezeigten Werte der Variablen. Wenn ich nun den 
USB-Stecker abziehe, und per Powerbank über den FS_USB_Anschluss 
versorgen will, tut sich nichts (umgejumpert habe ich).

Wenn ich dann aber den Flash AUSLESE! mit dem ST_Link, wird alles 
richtig angezeigt, und dass für mich wirrste ist, dass nach dem auslesen 
alles läuft. Erst wenn ich ihm den Strom wegnehme und wieder anstecke, 
ist es wieder so. Ich muss den Flash erst auslesen, bevor der Controller 
losrennt....

Hat da irgendwer nen hilfreichen Hinweis zu?

MfG Chaos

von holger (Gast)


Lesenswert?

Benutzt du Semihosting? Dann mach das mal aus.

von Stefan F. (Gast)


Lesenswert?

Wenn beim Debuggen der Wert einer Variable nicht angezeigt wird, kann es 
sein, dass der Compiler sie weg optimiert hat oder dass er sie in einem 
CPU Register vorhält anstatt im RAM.

Du musst die Compiler Option -O0 oder -Og benutzen, damit der Compiler 
code generiert, mit dem der Debugger klar kommt. -O0 deaktiviert alle 
Optimierungen. -Og würde unbenutzte Variablen entfernen, soweit ich 
weiß.

Wenn dein Programm ohne Programmieradapter nicht startet könnte es an 
instabiler oder zu langsam ansteigender Stromversorgung liegen. Wnn das 
Programm nach einem Druck auf den Reset Knopf anläuft, dann war es das.

von J. T. (chaoskind)


Lesenswert?

holger schrieb:
> Benutzt du Semihosting? Dann mach das mal aus.

Öh keine Ahnung, ehrlich gesagt, davon höre ich zum ersten mal. Kannst 
du mir auf die Schnelle sagen, wo ich das ausschalte, falls es an sein 
sollte?

Stefanus F. schrieb:
> Wenn beim Debuggen der Wert einer Variable nicht angezeigt wird, kann es
> sein, dass der Compiler sie weg optimiert hat oder dass er sie in einem
> CPU Register vorhält anstatt im RAM.

J. T. schrieb:
> Optimierungen
> sind komplett ausgeschaltet.

Stefanus F. schrieb:
> Wenn dein Programm ohne Programmieradapter nicht startet könnte es an
> instabiler oder zu langsam ansteigender Stromversorgung liegen. Wnn das
> Programm nach einem Druck auf den Reset Knopf anläuft, dann war es das.

Nein tut es nicht. Auch nach einem Druck auf Reset nicht. Ich muss erst 
den Flash auslesen, wenn ich danach dann Reset drücke, dann läuft es an

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Tja, die Glaskugel weiss nicth mehr weiter, wir brauchen Fakten. 
Schaltplan, Foto, Quelltext, welche Software nutzt du?

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Tja, die Glaskugel weiss nicth mehr weiter, wir brauchen Fakten.
> Schaltplan, Foto, Quelltext, welche Software nutzt du?

Liest du eigentlich die Postings? Bei deinem ersten Versuch übersahst 
du, dass ich die Optimierungen ausgeschaltet habe, und schlägst vor die 
Optimierungen auszuschalten.

Nun fragst du nach der Software, steht auch im Eröffnungspost, SW4STM32.
Quelltext bringt auch nix, weil es Quelltextunabhängig ist. Die 
Variablen werden nicht gezeigt. Egal mit welchem ich es versuche. Und 
Schaltplan und Foto werden auch nichts bringen. Ich benutze ein 
unbearbeites STM32F746g-Disco. Steht übrigens auch im Eröffnungspost.

von Stefan F. (Gast)


Lesenswert?

Ich habe Dir die Debug Optionen konkret genannt, weil ich vermutete, 
dass du sie aus versehen oder aus Unkenntnis doch nicht ausgeschaltet 
hast. Mein Vermutung der Unkenntnis ist sicher nicht so weit her geholt, 
nach deiner Info, dass du mit dem Begriff Semihosting nichts anfangen 
kannst.

Wenn du alles besser weißt und keine Fehler machst, brauchst du keine 
Hilfe. Viel Glück bei der Suche des Hardwarefehlers.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Ich habe Dir die Debug Optionen konkret genannt, weil ich vermutete,
> dass du sie aus versehen oder aus Unkenntnis doch nicht ausgeschaltet
> hast.

Da hast du falsch vermutet.

Stefanus F. schrieb:
> Wenn du alles besser weißt und keine Fehler machst, brauchst du keine
> Hilfe. Viel Glück bei der Suche des Hardwarefehlers.

Und schon wieder eine falsche Vermutung. Denn wäre es so, wie du 
vermutest, hätte ich tatsächlich nicht gefragt.

Wie wäre es statt zu vermuten, einfach mal zielführend nachzufragen? 
Aber danke, auf die Hilfe von Leuten, die nur Vermutungen anstellen, und 
damit dann auch noch falsch liegen, kann ich gerne verzichten.

von Stefan F. (Gast)


Lesenswert?

Erwartest du ernsthaft eine schnelle treffende Erklärung bei so wenig 
Informationen?

Eine seltsame Arbeitsweise das ist.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> ein Vermutung der Unkenntnis ist sicher nicht so weit her geholt,
> nach deiner Info, dass du mit dem Begriff Semihosting nichts anfangen
> kannst.

BTW was bitte hat Kenntniss über die Einstellung der Optimierungen mit 
Semihosting zu tun?

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Erwartest du ernsthaft eine schnelle treffende Erklärung bei so wenig
> Informationen?

Wie kommst du nun schon wieder auf dieses dünne Brett? Vermutung, 
vermute ich mal D:

Nein ich erwarte sowas wie von Holger. Eine Nennung von Möglichkeiten, 
die nicht schon explizit im Eröffnungspost ausgeschlossen wurden, und 
nicht irgendwelche Vorschläge, die schon im Eröffnungspost 
ausgeschlossen sind.
Auch wenn ich damit evtl nichts anfangen kann, kann es ja ein 
Ansatzpunkt sein, an dem man nachlesen kann.

Wie gesagt, die Optimierungseinstellungen und die verwendete Software 
wurden im Eröffnungspost genanngt, und dennoch musst du danach 
nachfragen. DAS stelle ich mir jedenfalls nicht unter Hilfreich vor.


Und mehr Infos hab ich leider selbst nicht. SW4STM32, Optimierungen o0, 
Quelltextunabhängig tritt das genannte Verhalten auf.

Mehr weiß ich auch nicht.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Bei deiner Einstellung, notwendige Infos zurückzuhalten, kann ich Dir 
nicht weiter helfen. Ich denke, das spielt gar keine Rolle, du willst 
von mir wohl auch keine Hilfe. Tut mir Leid, dass ich deine Zeit 
verschwendet habe.

von J. T. (chaoskind)


Lesenswert?

Was halte ich denn für Infos zurück? Ich habe schlicht einfach nicht 
mehr Infos.

Was versprichst du dir bitte von einem Foto? Wovon überhaupt? Vom 
handelsüblichen Discoboard mit nem schwarzen Display? Vermutlich nicht 
allzu hilfreich. Von der IDE, die mir alle Variablen auf 0 zeigt? 
Vermutlich genausowenig hilfreich. Solche Bilder würden höchstens für 
Redundanz der Information sorgen, jedoch keine neue zutage fördern. Auch 
der Quelltext wird nicht viel zutage fördern. Ein nahezu unverändertes 
von Cube erstelltes File, lediglich um die BSP_LCD inits erweitert und 
die Zählschleife.

Und ich habe auch prinzipiell nichts gegen Hilfe von dir, nur trägtst du 
bisher irgendwie nichts hilfreiches bei. Das ist mir irgendwie schon in 
diversen anderen Beiträgen aufgefallen.

P.S.

Achja ich nutze auch noch cube zum erstellen eines Projektes. Diese Info 
habe ich tatsächlich bösartigst zurückgehalten.

von J. T. (chaoskind)


Lesenswert?

Kann evtl jdm noch etwas zielführendes beitragen?

@Stefan
Entschuldige bitte, ich bin dich eventuell etwas zu sehr angegangen. Ich 
hab nur irgendwie das Gefühl dieses Forum baut immer ab. Ich versuche im 
allgemeinen mein Problem so genau ich kann zu formulieren. Und daher 
nervt diese Standardfragerei nach Bild Foto und sowieso mich nur noch 
ungemein, weil es einfach nichts beitragen würde. Und wenn dann noch 
nach Sachen gefragt wird, die klar im Eingangspost stehen....
Ich habe neulich auch ein Problem sehr ausführlich beschrieben, alle 
benötigten Files angebunden, und dann wird einem gesagt: "das ist zu 
lang, dass les ich mir nicht durch". Da ist es irgendwo schwer, den 
Mittelweg zu finden.

von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

J. T. schrieb:
> P.S.
>
> Achja ich nutze auch noch cube zum erstellen eines Projektes. Diese Info
> habe ich tatsächlich bösartigst zurückgehalten.

Hast du auch das Serial Wire Interface eingeschaltet? (siehe Anhang)

von J. T. (chaoskind)


Lesenswert?

Harry L. schrieb:
> Hast du auch das Serial Wire Interface eingeschaltet?

Danke für den Hinweis, aber das ist aktiviert. Ich glaube, sonst könnt 
ich überhaupt keine Debugsession starten. Zumindest schwang das mal 
zwischen den Zeilen mit, auf ner HandsOnSession von ST.

von Stefan F. (Gast)


Lesenswert?

Die Info, dass du als Software auch CubeMX verwendest, ist schon ein 
erheblicher Punkt. Denn darauf folgt die Frage, welche Debugging 
Optionen du dort eingeschaltet hast.

Des Weiteren kann durchaus ein gravierender Fehler in der 
Initialisierungsroutine sein, die du selbst geschrieben hast oder Cube 
MX erzeugt hat. Meine beiden ersten Programme (LED Blinker und 
Hello-World) funktionierten wegen zwei Bugs in Cube HAL nicht.

Erst danach begann ich, mich mit dem Referenzhandbuch zu beschäftigen. 
Mit Hilfe dieses Forums wurden die Fehler im Cube Code identifiziert und 
behoben. Mein Fazit daraus ist, dass ich Cube MX und HAL nicht mehr 
verwende. Denn inzwischen verstehe ich das Referenzhandbuch. Und wenn 
ich mal eine einzelne Passage nicht verstehe, bekomme ich hier Hilfe.

Vorausgesetzt, ich zeige den Hardwareaufbau, den Quelltext und die 
verwendete Software .

Der Hardwareaufbau ist durchaus auch von Interesse, selbst wenn du ein 
fix und fertiges Board verwendest von dessen Korrektheit wir alle 
ausgehen. Ich habe hier z.B. schon öfters sehr dünne lange Kabel 
gesehen, an denen zu viel Spannung abfiel. Ich habe ungeeignete 
Netzteile gesehen (der heftigste Fall war ein Eisenbahntrafo). Und ich 
habe falsch angeschlossene Messgeräte gesehen. Zu lange Leitungen am 
Programmieradapter sind ein weitere Klassiker. Hier wurden schon Fotos 
mit weniger als 5 Bauteilen gezeigt, die Fehler enthielten.

Ein Foto vom Aufbau kann Hinweise auf die Fehlerursache geben. Nicht 
alles im am Schaltplan erkennbar, und du hast ja sogar den zurück 
gehalten.

Es gilt weiterhin:

> Bei deiner Einstellung, notwendige Infos zurückzuhalten,
> kann ich Dir nicht weiter helfen.

Was ich glaube, zu benötigen, habe ich jetzt deutlich genug 
hingeschrieben. Mag sein, dass ich übertreibe, allerdings denke mal 
darüber nach, warum wohl sonst keiner einen Versuch gestartet hat, Dir 
zu helfen. Hmm?

Ich habe mitbekommen, dass gestern Abend mindestens zwei STM32 Experten 
aktiv waren, die sich sehr viel besser auskennen, als ich. Beide 
beteiligen sich üblicherweise erst, wenn das Problem klar ist. Ich 
hingegen versuche im Zweifelsfall, die betroffene Person durch Fragen in 
die richtige Richtung zu lenken.

von Jim M. (turboj)


Lesenswert?

J. T. schrieb:
> Wenn ich nun den
> USB-Stecker abziehe, und per Powerbank über den FS_USB_Anschluss
> versorgen will, tut sich nichts (umgejumpert habe ich).

Hast Du mal den Schaltplan studiert wo das Taktsignal herkommt? Und 
nein, ich schaue da ohne angemessene Bezahlung nicht selbst rein.

Ich habe im Hinterkopf das auf einigen STM32 Referenz-Platinen das 
Signal aus dem ST-Link gespeist wird.

Der wird ohne PC dran aber nix generieren...

Abhilfe: STM32 auf internen Takt umprogrammieren.

von m.n. (Gast)


Lesenswert?

J. T. schrieb:
> Ein weiteres Problem das aufgetaucht ist, ist dass der µc scheinbar sein
> Programm vergisst

Das kann passieren, wenn etwas mit dem Reset nicht stimmt. Sind 
vielleicht die BOOT-Pins nicht richtig beschaltet?
Der Debugger liefert entweder selber einen Reset oder ist nicht darauf 
angewiesen. Kontrolliere das bitte einmal.

Jim M. schrieb:
> Abhilfe: STM32 auf internen Takt umprogrammieren.

Ohne jetzt nachzusehen: bei fehlendem HSE-Takt wird intern auf HSI 
zurückgechaltet. Daran wird es nicht liegen.

von Stefan F. (Gast)


Lesenswert?

m.n. schrieb:
> Sind vielleicht die BOOT-Pins nicht richtig beschaltet?

Unwahrscheinlich, es handelt sich um ein fertiges Board von ST.

> Ohne jetzt nachzusehen: bei fehlendem HSE-Takt wird intern auf HSI
> zurückgeschaltet. Daran wird es nicht liegen.

Nein, das macht der Chip nicht automatisch. Dazu muss man eine 
entsprechende Fehlerbehandlung einprogrammieren.

Aber das Programm und Schaltplan will er uns ja nicht zeigen. Weiter 
herum zu raten scheint mir wenig hilfreich, hat der TO auch schon 
abgelehnt.

von m.n. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Aber das Programm und Schaltplan will er uns ja nicht zeigen. Weiter
> herum zu raten scheint mir wenig hilfreich, hat der TO auch schon
> abgelehnt.

Dann halte Dich doch einfach mal zurück. Deine Aussagen geben keine 
Tatsachen sondern Dein Bauchgefühl wider. Damit kann man nicht viel 
anfangen.

von Christopher J. (christopher_j23)


Lesenswert?

Jim M. schrieb:
> Ich habe im Hinterkopf das auf einigen STM32 Referenz-Platinen das
> Signal aus dem ST-Link gespeist wird.
>
> Der wird ohne PC dran aber nix generieren...

Warum denn nicht? So lange der ST-Link irgendwoher seine 
Versorgungsspannung bekommt sollte das mit der Taktausgabe doch laufen, 
egal ob am PC angestöpselt oder nicht.

J. T. schrieb:
> Wenn ich dann aber den Flash AUSLESE! mit dem ST_Link, wird alles
> richtig angezeigt, und dass für mich wirrste ist, dass nach dem auslesen
> alles läuft. Erst wenn ich ihm den Strom wegnehme und wieder anstecke,
> ist es wieder so. Ich muss den Flash erst auslesen, bevor der Controller
> losrennt....

Das klingt zu 99% nach aktiviertem Semihosting. Semihosting hat die 
unangenehme Eigenschaft, dass der Controller crasht, wenn kein Debugger 
angeschlossen ist bzw. (afaik) der Debugger nicht mit dem PC verbunden 
ist. Durch das auslesen des Flash stellst du genau diese beiden Dinge 
sicher und alles funktioniert.

Wie du Semihosting in SW4STM32 aktivierst oder deaktivierst kann ich dir 
auf die Schnelle leider nicht sagen, weil ich es hier nicht installiert 
habe aber eine kurze Google-Suche sollte da brauchbare Ergebnisse 
liefern. Prinzipiell sollte man das auswählen können wenn man ein neues 
Projekt erstellt. Bring also möglichst erstmal ein frisches Blinky zum 
laufen.

von J. T. (chaoskind)


Angehängte Dateien:

Lesenswert?

@Stefan:
Noch einmal, ich weigere mich nicht, ich erachte es als sinnlos. Aber 
nun im angehängten Dokument finden sich Schaltpläne und Fotos vom Board 
und meine main. An der Hardware habe ich nichts geändert.

Jim M. schrieb:
> Ich habe im Hinterkopf das auf einigen STM32 Referenz-Platinen das
> Signal aus dem ST-Link gespeist wird.

Auf dem 32f746Disco gibt es Jumper über die du die Spannungsversorgung 
wählen kannst. Wenn du über das ST-Link speist, musst du tatsächlich am 
Rechner eingesteckt sein, weil dann irgendwelche Startsignale vom 
ST-Link erwartet werden.(Habs nicht genauer nachgelesen).

Was mir noch eingefallen ist (das Problem besteht schon länger), einmal 
hab ich versucht, über USB_FS zu versorgen. Also die Spannungsversorgung 
umgejumpert, 5v an USB_FS angesteckt, und es ging nicht. Dann zusätzlich 
das ST_Link angesteckt und den Flash ausgelesen. Dann lief es und danach 
konnt ich sogar sowohl ST-Link abziehen und USB_FS abziehen, und wenn 
ich dann USB_FS wieder ansteckte lief es ganz normal los.


Ich vermute immer noch, dass die Problematik aus der IDE kommen muss. 
Hab ich zwar eigentlich keinen Grund für, da ich bewusst nichts 
verstellt hab. Aber es lief ja alles mal. Und am Board habe ich nicht 
nur bewusst nichts geändert, sondern sicher nichts geändert.

m.n. schrieb:
> Ohne jetzt nachzusehen: bei fehlendem HSE-Takt wird intern auf HSI
> zurückgechaltet. Daran wird es nicht liegen.

HSE ist vorhanden und liegt an. Darüber läuft das Board ja. Und nach dem 
Flash auslesen läufts ja auch.

Christopher J. schrieb:
> Warum denn nicht? So lange der ST-Link irgendwoher seine
> Versorgungsspannung bekommt sollte das mit der Taktausgabe doch laufen,
> egal ob am PC angestöpselt oder nicht.

Damit hat er tatsächlich ein Problem. Wenn ich am USB_Link nur 5V 
einspeise, dann läuft es gar nicht erst los, aber dazu gibt is irgendwo 
auch nen Satz in einm der unendlich vielen PDFs, die es zu dem Board und 
dem µC gibt. Ich weiß nicht mehr wo mir der Satz begegnete.

Christopher J. schrieb:
> Das klingt zu 99% nach aktiviertem Semihosting. Semihosting hat die
> unangenehme Eigenschaft, dass der Controller crasht, wenn kein Debugger
> angeschlossen ist bzw. (afaik) der Debugger nicht mit dem PC verbunden
> ist. Durch das auslesen des Flash stellst du genau diese beiden Dinge
> sicher und alles funktioniert.
>
> Wie du Semihosting in SW4STM32 aktivierst oder deaktivierst kann ich dir
> auf die Schnelle leider nicht sagen, weil ich es hier nicht installiert
> habe aber eine kurze Google-Suche sollte da brauchbare Ergebnisse
> liefern. Prinzipiell sollte man das auswählen können wenn man ein neues
> Projekt erstellt. Bring also möglichst erstmal ein frisches Blinky zum
> laufen.

Dann will ich mal rausfinden, wo ich dass ausschalten kann. Ich hatte 
gestern nur noch grob rausgefunden, wass das Semihosting denn überhaupt 
ist.

Danke für die hilfreichen Antworten

von J. T. (chaoskind)


Lesenswert?

J. T. schrieb:
> einmal
> hab ich versucht, über USB_FS zu versorgen. Also die Spannungsversorgung
> umgejumpert, 5v an USB_FS angesteckt, und es ging nicht. Dann zusätzlich
> das ST_Link angesteckt und den Flash ausgelesen. Dann lief es und danach
> konnt ich sogar sowohl ST-Link abziehen und USB_FS abziehen, und wenn
> ich dann USB_FS wieder ansteckte lief es ganz normal los.

Das hier grad nochmal versucht. Das geht auch noch.

von J. T. (chaoskind)


Angehängte Dateien:

Lesenswert?

P.S.
Hier auch noch das Cubefile

von Johannes S. (Gast)


Lesenswert?

wenn das semihosting aktiviert ist müsste folgendes in der Linker Flags 
zu finden sein:
-specs=rdimon.specs -lc -lrdimon
Und auch beim debugger starten sollte die Meldung 'semihosting is 
enabled' zu sehen sein, ansonsten wird das nicht die Ursache sein.
Hier ist das gut beschrieben:
http://alphaloewe.com/2017/01/24/enable-semi-hosting-with-openstm32-system-workbench/

von J. T. (chaoskind)


Lesenswert?

Das steht in meinem Linkersettings:

-mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16 
-specs=nosys.specs -specs=nano.specs -T"../STM32F746NGHx_FLASH.ld" 
-Wl,-Map=output.map -Wl,--gc-sections -lm

also vermutlich kein Semihosting?

von Johannes S. (Gast)


Lesenswert?

könnten theoretisch noch in dem .ld linker input stehen, wird aber eher 
nicht so sein. Als fällt diese Ursache weg.
Um zu sehen welcher clock tatsächlich verwendet wird kann man sich 
SystemClock_Config() ansehen.

von J. T. (chaoskind)


Lesenswert?

Ja sieht nach HSE aus. So hatte ich es auch in Cube konfiguriert.... 
wobei auch HSI wird eingeschaltet.... komisch
1
void SystemClock_Config(void)
2
{
3
4
  RCC_OscInitTypeDef RCC_OscInitStruct;
5
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
6
  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;
7
8
    /**Configure the main internal regulator output voltage 
9
    */
10
  __HAL_RCC_PWR_CLK_ENABLE();
11
12
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
13
14
    /**Initializes the CPU, AHB and APB busses clocks 
15
    */
16
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
17
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
18
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
19
  RCC_OscInitStruct.HSICalibrationValue = 16;
20
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
21
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
22
  RCC_OscInitStruct.PLL.PLLM = 25;
23
  RCC_OscInitStruct.PLL.PLLN = 432;
24
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
25
  RCC_OscInitStruct.PLL.PLLQ = 9;
26
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
27
  {
28
    _Error_Handler(__FILE__, __LINE__);
29
  }
30
31
    /**Activate the Over-Drive mode 
32
    */
33
  if (HAL_PWREx_EnableOverDrive() != HAL_OK)
34
  {
35
    _Error_Handler(__FILE__, __LINE__);
36
  }
37
38
    /**Initializes the CPU, AHB and APB busses clocks 
39
    */
40
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
41
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
42
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
43
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
44
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
45
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
46
47
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7) != HAL_OK)
48
  {
49
    _Error_Handler(__FILE__, __LINE__);
50
  }
51
52
  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC|RCC_PERIPHCLK_USART1
53
                              |RCC_PERIPHCLK_SAI2|RCC_PERIPHCLK_I2C1
54
                              |RCC_PERIPHCLK_CLK48;
55
  PeriphClkInitStruct.PLLI2S.PLLI2SN = 344;
56
  PeriphClkInitStruct.PLLI2S.PLLI2SP = RCC_PLLP_DIV2;
57
  PeriphClkInitStruct.PLLI2S.PLLI2SR = 2;
58
  PeriphClkInitStruct.PLLI2S.PLLI2SQ = 7;
59
  PeriphClkInitStruct.PLLSAI.PLLSAIN = 432;
60
  PeriphClkInitStruct.PLLSAI.PLLSAIR = 2;
61
  PeriphClkInitStruct.PLLSAI.PLLSAIQ = 3;
62
  PeriphClkInitStruct.PLLSAI.PLLSAIP = RCC_PLLSAIP_DIV2;
63
  PeriphClkInitStruct.PLLI2SDivQ = 1;
64
  PeriphClkInitStruct.PLLSAIDivQ = 2;
65
  PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_2;
66
  PeriphClkInitStruct.Sai2ClockSelection = RCC_SAI2CLKSOURCE_PLLI2S;
67
  PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
68
  PeriphClkInitStruct.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1;
69
  PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48SOURCE_PLL;
70
  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
71
  {
72
    _Error_Handler(__FILE__, __LINE__);
73
  }
74
75
  HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1);
76
77
    /**Configure the Systick interrupt time 
78
    */
79
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
80
81
    /**Configure the Systick 
82
    */
83
  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
84
85
  /* SysTick_IRQn interrupt configuration */
86
  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
87
}

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

Laut Schaltplan ist auch ein 25 MHz Oszillator vorhanden, -X2 sollte 
bestückt sein. D.h. der Clock kommt nicht wie bei einigen anderen 
Nucleos von dem angeflanschten STLink.

von J. T. (chaoskind)


Lesenswert?

Johannes S. schrieb:
> aut Schaltplan ist auch ein 25 MHz Oszillator vorhanden, -X2 sollte
> bestückt sein. D.h. der Clock kommt nicht wie bei einigen anderen
> Nucleos von dem angeflanschten STLink.

Ja der ist quasi die Taktquelle von dem ganzen HSE-Geraffel. Bei den 
Discos kannst du angeblich den STlink Teil abknipsen. Wobei ich mir beim 
F7 nicht vorstellen kann, wie das schadlos gehen soll.

Ich bin jetzt grad dabei, wie vorgeschlagen, ein nacktes Blinky zu 
erstellen. Meld mich gleich wieder

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Nun spuckt Cube so "lustige" Sachen aus wie:
1
void SVC_Handler(void)
2
{
3
  /* USER CODE BEGIN SVCall_IRQn 0 */
4
5
  /* USER CODE END SVCall_IRQn 0 */
6
  HAL_SVCall_IRQHandler
7
  /* USER CODE BEGIN SVCall_IRQn 1 */
8
9
  /* USER CODE END SVCall_IRQn 1 */
10
}

Wenn ich daraus "
1
HAL_SVCall_IRQHandler();
" mache, warnt er mich wegen der impliziten Deklaration vom IRQHandler 
und bricht letzlich mit einer undefined reference zu dem Handler ab.....

So richtig durchsichtig is Cube irgendwie auch nicht....

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

J. T. schrieb:
> HAL_SVCall_IRQHandler

Zeile löschen wenn du den nicht definiert hast.

von Johannes S. (Gast)


Lesenswert?

oder mal mbed-os ausprobieren, das Disco F746 wird auch unterstützt.
https://github.com/ARMmbed/mbed-os-example-blinky
mbed-cli installieren, das Beispiel wie auf der Seite importieren.
Kompilieren mit 'mbed compile -m DISCO_F746NG -t gcc_arm', das liefert 
in ./BUILD ein .bin das auf das board kopiert werden kann.
Es gibt auch einen export nach SW4STM32: 'mbed export -m DISCO_F746NG -i 
SW4STM32'. Alternativ noch '-z' hinten dran, dann bekommt man ein 
gezipptes project das in der IDE importiert werden kann.
Für dieses Board gibt es auch ein BSP das man auch in mbed benutzen 
kann, habe ich mit dem Disco F469NI auch gerade gemacht.

von Stefan F. (Gast)


Lesenswert?

J. T. schrieb:
> Ja sieht nach HSE aus. So hatte ich es auch in Cube konfiguriert....
> wobei auch HSI wird eingeschaltet.... komisch

HSI ist schon beim Reset aktiv und muss bei der Konfiguration der 
Taktquelle zunächst aktiv bleiben.

Die Software schaltet den HSE Oszillator ein, wartet bis er 
eingeschwungen ist und schaltet erst dann auf diesen um.

Erst danach kann man den HSI Oszillator abschalten. Ansonsten hängt sich 
der µC auf.

Dieser Ablauf ist in HAL_RCC_OscConfig() verborgen.

> Ich bin jetzt grad dabei, wie vorgeschlagen, ein
> nacktes Blinky zu erstellen. Meld mich gleich wieder

Gut, so würde ich jetzt auch vorgehen.

Hab ich Dich richtig verstanden, dass du nur das nackte Board ohne 
Modifikation oder externe Beschaltung verwendest?

von J. T. (chaoskind)


Lesenswert?

Johannes S. schrieb:
> Zeile löschen wenn du den nicht definiert hast.

Danke das hat geholfen.

So ich hab nun ein minimales blinky gemacht. Nur ein Timer der ne PWM 
macht.

Das Problem bleibt bestehen...  Ich muss den Flash auslesen, damit es 
nach dem Anstecken losläuft.

Die Variablengeschichte hab ich jetzt noch nicht getestet, denke aber, 
da hat sich auch nichts geändert. Ich schau nochmal schnell

von J. T. (chaoskind)


Lesenswert?

Ok.... Die Variablenwerte werden mir wieder angezeigt.

von Christopher J. (christopher_j23)


Lesenswert?

J. T. schrieb:
> Das steht in meinem Linkersettings:
>
> -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16
> -specs=nosys.specs -specs=nano.specs -T"../STM32F746NGHx_FLASH.ld"
> -Wl,-Map=output.map -Wl,--gc-sections -lm
>
> also vermutlich kein Semihosting?

Möglich aber eben nicht ausgeschlossen. Es könnte theoretisch irgendwo 
einen Haken "Semihosting aktivieren" geben, der das dann noch an die 
Linkeranweisungen anhängt. Wenn du weißt wie man es einschaltet, dann 
kannst du es auch sicher abstellen

von J. T. (chaoskind)


Angehängte Dateien:

Lesenswert?

Christopher J. schrieb:
> Möglich aber eben nicht ausgeschlossen. Es könnte theoretisch irgendwo
> einen Haken "Semihosting aktivieren" geben, der das dann noch an die
> Linkeranweisungen anhängt. Wenn du weißt wie man es einschaltet, dann
> kannst du es auch sicher abstellen

Ich hab zumindest kein solches Häkchen finden können.....

Im Anhang nochmal das Cubefile und die main zum laufenden blinky.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Hab ich Dich richtig verstanden, dass du nur das nackte Board ohne
> Modifikation oder externe Beschaltung verwendest?

Ja genau. Bzw jetzt fürs Blinky hab ich die Masseleitung meines Oszis an 
GND und den Tastkopf auf D3 von CN4.

Dank dir auch für die Erläuterung zum Oszilatoranschwingen!

von J. T. (chaoskind)


Lesenswert?

J. T. schrieb:
> Ja genau. Bzw jetzt fürs Blinky hab ich die Masseleitung meines Oszis an
> GND und den Tastkopf auf D3 von CN4.

P.S.

Und in dieser Konfiguration werden mir die Werte von Variablen wieder 
angezeigt, jedoch besteht das Problem mit dem pseudovergesslichen Flash 
weiterhin.

von Stefan F. (Gast)


Lesenswert?

Messe mal die Spannung an den beiden Boot Pins.

Und probiere aus, ob dein Problem auch besteht, wenn du das Board über 
seinen USB Anschluss mit einem handy-Ladegerät (statt PC) verbindest. 
Ich will wissen, ob der ST-Link (warum auch immer) unbedingt über USB 
versorgt werden will.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Messe mal die Spannung an den beiden Boot Pins.

Wo finde ich die? Sind die auf die Connectors rausgeführt? Auf nen 
schnellen Blick find ich sie zumindest nicht....

Meinst du die am ST-Link? Boot0 und 1?

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Die sind im Betrieb beide auf 0V.

von Stefan F. (Gast)


Lesenswert?

m.n. schrieb:
> Sind vielleicht die BOOT-Pins nicht richtig beschaltet?

(Keine Reaktion)

J. T. schrieb:
>> Messe mal die Spannung an den beiden Boot Pins.
> Wo finde ich die? Sind die auf die Connectors rausgeführt? Auf nen
> schnellen Blick find ich sie zumindest nicht....

(Ich habe gerade die Augen verdreht)

Denn diese Info steht in dem von Dir geposteten PDF Dokument. Man findet 
sie, indem man Strg-F drücken und dann "boot" eintippt.

von Stefan F. (Gast)


Lesenswert?

J. T. schrieb:
> Die (Boot Pins) sind im Betrieb beide auf 0V.

So soll es auch sein.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Und probiere aus, ob dein Problem auch besteht, wenn du das Board über
> seinen USB Anschluss mit einem handy-Ladegerät (statt PC) verbindest.
> Ich will wissen, ob der ST-Link (warum auch immer) unbedingt über USB
> versorgt werden will.

Wenn ich ne Powerbank an den ST-Link USB Anschluss stecke, passiert 
nichts. Wenn ich umjumper und über FS_USB mit der Powerbank versorge, 
geht auch nichts.
Wenn ich dann in diesem Zustand zusätzlich wieder den ST-Link 
USB-Anschluss mit dem Rechner verbinde, den Flash auslese und resete, 
dann läuft es. Danach kann ich dann auch den ST-Link abziehen. Und wenn 
ich dann auch noch den FS_USB abziehe und wieder anstecke, dann läuft es 
als wäre nie was gewesen...

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Denn diese Info steht in dem von Dir geposteten PDF Dokument. Man findet
> sie, indem man Strg-F drücken und dann "boot" eintippt.

Auf den Gedanken kam ich dann auch, nachdem ich sie auf nen schnellen 
Blick nicht fand :D

Stefanus F. schrieb:
> m.n. schrieb:
>> Sind vielleicht die BOOT-Pins nicht richtig beschaltet?
>
> (Keine Reaktion)

Es wurde doch mehrfach erwähnt, das ich ein originales ST-Board benutze. 
Die sollten das schon richtig gemacht haben..

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Ein bischen Offtopic:
Ich hab nebenbei ein wenig gelesen, wie ich denn mit der HAL den 
PWM-Wert ändern kann. Dabei bin ich auf Konstrukte wie sowas gestoßen:
1
/* USER CODE BEGIN 4 */
2
void user_pwm_setvalue(uint16_t value)
3
{
4
    TIM_OC_InitTypeDef sConfigOC;
5
  
6
    sConfigOC.OCMode = TIM_OCMODE_PWM1;
7
    sConfigOC.Pulse = value;
8
    sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
9
    sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
10
    HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1);
11
    HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);  
12
}
13
/* USER CODE END 4 */

warum so wahnsinnig umständlich? Was spricht dagegen, dass einfach so zu 
machen?:
1
uint32_t PWM_Wert = 1500;
2
uint32_t *RegPt = 0x40000434; //Adresse vom "PWM-Wert-Register"
3
...
4
main()
5
*RegPt = PWM_Wert;

Ich habs grad probiert, und das klappt wunderbar. Handelt man sich damit 
irgendwelche Nebeneffekte ein die ich nicht sehe?

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

J. T. schrieb:
> Ich habs grad probiert, und das klappt wunderbar. Handelt man sich damit
> irgendwelche Nebeneffekte ein die ich nicht sehe?

Ja, schwer nachvollziehbaren Code. (magic-Numbers)

Wenn du CubeMX und HAL nutzt, kannst du den PWM-Wert so einstellen:
1
  htim2.Instance->CCR1 = 2100;

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Harry L. schrieb:
> htim2.Instance->CCR1 = 2100;

aahhaa! sowas hab ich gesucht. Kannst du mir sagen in welcher Datei ich 
die ganzen defines finde?

Harry L. schrieb:
> Ja, schwer nachvollziehbaren Code. (magic-Numbers)

Gut aber dagegen könnte man den RegPt ja PWM_Wert_Pt nennen und die 
Adresse noch als PWM_Wert_Reg_adr oder so definieren. Aber das ist dann 
vermutlich dass gleiche wie mit der Hal nur in grün.

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

J. T. schrieb:
> Kannst du mir sagen in welcher Datei ich
> die ganzen defines finde?

Grep ist dein Freund...

Braucht man meist aber gar nicht.
Eclipse zeigt dir automatisch alle Struct-Member an.

von Harry L. (mysth)


Lesenswert?

J. T. schrieb:
> Gut aber dagegen könnte man den RegPt ja PWM_Wert_Pt nennen und die
> Adresse noch als PWM_Wert_Reg_adr oder so definieren. Aber das ist dann
> vermutlich dass gleiche wie mit der Hal nur in grün.

Auch keine gute Idee!
Man nutzt die Bezeichnungen, die auch im Datenblatt stehen.

von Johannes S. (Gast)


Lesenswert?

J. T. schrieb:
> Wenn ich ne Powerbank an den ST-Link USB Anschluss stecke, passiert
> nichts.

habe mein Board mal entstaubt und ein mbed blinky reingeladen. Das 
startet auch wenn ich das Board mit einer PB an dem STLink USB versorge.

von Johannes S. (Gast)


Lesenswert?

Harry L. schrieb:
> Eclipse zeigt dir automatisch alle Struct-Member an.

genau, oder mit ctrl+click auf das Symbol wird die Datei mit der 
Definition/Implementierung geöffnet.

von Harry L. (mysth)


Lesenswert?


von J. T. (chaoskind)


Lesenswert?

Harry L. schrieb:
> Auch keine gute Idee!
> Man nutzt die Bezeichnungen, die auch im Datenblatt stehen.

Ok dass leuchtet ein. Danke dir, nun aber wieder zurück zum Thema bitte

: Bearbeitet durch User
Beitrag #5618424 wurde von einem Moderator gelöscht.
von J. T. (chaoskind)


Lesenswert?

Harry L. schrieb:
> Und falls du das noch nicht gefunden hast - dieses PDF solltest du dir
> anschauen:

Puh das ist ja n ganz schöner Klopper! Hatte ich aber bisher tatsächlich 
noch nicht gefunden. Nach dem Überfliegen des Inhaltsverzeichnises macht 
das den Eindruck eines mindestens leicht bis mittelschwer hilfreichen 
Dokumentes ;-)

von Stefan F. (Gast)


Lesenswert?

Ich denke, dieses PDF ist nur zusammen mit dem Referenzhandbuch der 
STM32F7 Serie vollständig. Also noch ein Klopper oben drauf.

von Harry L. (mysth)


Lesenswert?

Stefanus F. schrieb:
> Ich denke, dieses PDF ist nur zusammen mit dem Referenzhandbuch der
> STM32F7 Serie vollständig. Also noch ein Klopper oben drauf.

Nur im Ausnahmefall, bzw. erst später.

Für den Anfang ist da alles, was man zum Programmieren mit HAL benötigt 
enthalten.

von J. T. (chaoskind)


Lesenswert?

Harry L. schrieb:
> Für den Anfang ist da alles, was man zum Programmieren mit HAL benötigt
> enthalten.

Das Gefühl hab ich nach dem Inhaltsverzeichnis auch. Den anderen hab ich 
übrigens auf meiner Festplatte, er kam mir bisher aber immer wenig 
hilfreich vor, weswegen die Konsultierungsfrequenz sich über die Zeit 
asymptotisch gegen Null entwickelte ;-) Irgendwie fehlt mir den 
"STM-Monstern" bzw deren Dokumenten die schlichte Klarheit der 
AVR-Dokus.
Aber vermutlich steht weder in dem einen noch in dem anderen was zu der 
Geschichte mit den Variablen und dem Flash.

Können wir uns bitte wieder darauf konzentrieren?

von J. T. (chaoskind)


Lesenswert?

Johannes S. schrieb:
> habe mein Board mal entstaubt und ein mbed blinky reingeladen. Das
> startet auch wenn ich das Board mit einer PB an dem STLink USB versorge.

Sorry hab dich bis jetzt irgendwie überlesen. Das spricht dann ja für 
irgendwas mit der Hardware bei mir.
Welche LED sind bei dir am leuchten? Wenn wir mal die USB-Anschlüsse als 
unten definieren, dann leuchtet bei mir die LED direkt unter den 
4PowerJumpern rot, und die neben dem USB-ST-Link blinkt ca 5mal rot grün 
im geschätzten 10Hz-takt und leuchtet dann nen kleinen Moment grün. Der 
kleine Moment ist vermutlich so lang wie einmal rot-grün-rot vom 
schnellen Blinken dauert.

von J. T. (chaoskind)


Lesenswert?

Wer auch immer alle meine Beiträge negativ und alle von Stefanus positiv 
bewertet hat, den Beitrag von Stefanus um 17:14 hast du 
fälschlicherweise negativ bewertet. Irgendwo zwischendrin hast du auch 
einen unbewertet gelassen

von Johannes S. (Gast)


Angehängte Dateien:

Lesenswert?

mein blinky lässt die LD1, grün, zwischen Resettaster und den Headerpins 
blinken. Ich hänge das .bin mal an.
Was noch sein könnte sind verstellte Option Bytes, habe meine, die noch 
original sein müssten, mal angehängt. Kann man im STLink Utility 
auslesen lassen. Damit kann man auch ein Update des STLink machen, 
vielleicht ist das auch etas zu alt.
Vergiss die Schei** Bewertungen hier.

von J. T. (chaoskind)


Lesenswert?

Johannes S. schrieb:
> mein blinky lässt die LD1, grün, zwischen Resettaster und den Headerpins
> blinken. Ich hänge das .bin mal an.
> Was noch sein könnte sind verstellte Option Bytes, habe meine, die noch
> original sein müssten, mal angehängt. Kann man im STLink Utility
> auslesen lassen

Das werd ich mal testen

Johannes S. schrieb:
> Damit kann man auch ein Update des STLink machen,
> vielleicht ist das auch etas zu alt.

Das Update musste ich vor drei vier Wochen machen, als ich das Board mal 
wieder rausgekramte. Davor ging quasi gaaanix.

Johannes S. schrieb:
> Vergiss die Schei** Bewertungen hier.

Keine Sorge, die kümmern mich nicht. Ich frag mich eh, wer die ernsthaft 
nutzt. Ich fands nur lustig, beim nochmal nachlesen der Beiträge fiel 
mir das auf, alle meine durchgehend -1, alle von Stefanus bis auf den 
einen +1 :D. Freundlich wie ich bin, weise ich natürlich auf den 
offensichtlich gemachten Fehler hin

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

J. T. schrieb:
> Wer auch immer alle meine Beiträge negativ und alle
> von Stefanus positiv bewertet hat ...

Guck da gar nicht hin. Es gibt hier einen (oder mehrere) Spaßvögel, 
welche die Bewertungsfunktion missbrauchen, um Ärger zu provozieren.

Zudem benutzen die meisten anderen die Bewertungsfunktion, um anzugeben, 
ob sie zustimmen oder ablehnen. Dazu ist sie aber nicht vorgesehen, was 
schon aus der Beschriftung hervor geht.

Ich verdeutliche das mal an einem extremen Beispiel:
Wenn ein Islamist ausführlich erklärt, warum er eine Bombe gelegt hat, 
dann finde das äußerst interessant und lesenwert. Aber ich stimme seiner 
Ideologie nicht zu.

Soll ich dann +1 anklicken, oder besser nicht? Das muss jeder für sich 
entscheiden.

von J. T. (chaoskind)


Lesenswert?

Meine Option-Bytes sehen genauso aus wie bei dir, und es blinkt auch an 
der LED, wenn ich dein bin flashe. Aber sobald ich den Stecker abziehe 
und wieder anstecke, muss ich den Flash auslesen damit es losläuft. Vor 
dem Auslesen ist ein Druck auf den Resetbutton wirkungsfrei, hinter 
läuft er los, der Controller. Immerhin werden in meinem blinky die 
Variablen shconmal angezeigt. Warum das in meinem größeren Programm 
nicht klappt, wüsste ich auch gern. Alles ganz schon undurchsichtig für 
mich =(

von Harry L. (mysth)


Lesenswert?

Geh das mal systematisch an!
Generiere mit CubeMX ein leeres neues Projekt mit deinem Board als 
Template.
Dann fügst du in die main-loop in main.c nur den folgenden Code ein:
1
/* USER CODE BEGIN 3 */
2
      HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
3
      HAL_Delay(300);
4
      HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
5
      HAL_Delay(300);

Die Port- und Pin-Bezeichnungen musst du natürlich auf deine Hardware 
anpassen.
In der generierten main.h sind die bereits für die auf dem Board 
istallierten LEDs definiert.

Ansonsten nix anpacken, und dann mal schauen, ob das Problem immer noch 
auftritt.

von J. T. (chaoskind)


Lesenswert?

Mir ist grad noch etwas aufgefallen. Die LED neben dem USB-stecker 
leuchtet erst rot wenn ich den Stecker "neu" einstecke. Wenn ich dann 
mit ST-Link Utility connecte blinkt sie in beschriebener Weise und wenn 
ich dann disconnecte, leuchet sie durchgehend grün. Das will mir doch 
sicher auch irgendwas sagen?

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Guck da gar nicht hin. Es gibt hier einen (oder mehrere) Spaßvögel,
> welche die Bewertungsfunktion missbrauchen, um Ärger zu provozieren.
>
> Zudem benutzen die meisten anderen die Bewertungsfunktion, um anzugeben,
> ob sie zustimmen oder ablehnen. Dazu ist sie aber nicht vorgesehen, was
> schon aus der Beschriftung hervor geht.
>
> Ich verdeutliche das mal an einem extremen Beispiel:
> Wenn ein Islamist ausführlich erklärt, warum er eine Bombe gelegt hat,
> dann finde das äußerst interessant und lesenwert. Aber ich stimme seiner
> Ideologie nicht zu.
>
> Soll ich dann +1 anklicken, oder besser nicht? Das muss jeder für sich
> entscheiden.

Dein Beispiel gefällt mir irgendwie :D

von Stefan F. (Gast)


Lesenswert?

Ich würde die Konfiguration der Taktquelle für diesen Test auch erstmal 
auf die einfachste Option reduzieren, und zwar alles auf 16 MHz mit HSI 
Oszillator stellen.

von Johannes S. (Gast)


Lesenswert?

J. T. schrieb:
> Mir ist grad noch etwas aufgefallen. Die LED neben dem USB-stecker
> leuchtet erst rot wenn ich den Stecker "neu" einstecke.

bei mir leuchtet die auch rot (du meinst die Mehrfarbled?), bei connect 
blinkt es rot/grün und bei disconnect wieder dauer rot, dann grün. Also 
auch wie bei dir.
Hast du mit dem STLink Util auch mal den Speicher komplett gelöscht?

von Harry L. (mysth)


Lesenswert?

Stefanus F. schrieb:
> Ich würde die Konfiguration der Taktquelle für diesen Test auch erstmal
> auf die einfachste Option reduzieren, und zwar alles auf 16 MHz mit HSI
> Oszillator stellen.

Warum sollte man sowas bei einem von CubeMX generierten Code für ein 
0815-ST-Boad tun?
Die Grundeinstellungen sind durchaus sinnvoll und funktionieren.

von Johannes S. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Ich würde die Konfiguration der Taktquelle für diesen Test auch erstmal
> auf die einfachste Option reduzieren, und zwar alles auf 16 MHz mit HSI
> Oszillator stellen.

warum soll das gleiche Programm bei mir starten und bei ihm nicht? An 
den Takten kann man nichts per HW verstellen, auf dem Disco board sind 
nur Jumper für die Stromversorgung. Der Oszi -X2 ist vorhanden, das war 
doch auch schon geklärt. Das Disco ist kein Nucleo wo der STLink 
abtrennbar ist.

von Stefan F. (Gast)


Lesenswert?

Harry L. schrieb:
>> Ich würde die Konfiguration der Taktquelle für diesen Test
>> auch erstmal auf die einfachste Option reduzieren, und zwar
>> alles auf 16 MHz mit HSI Oszillator stellen.

> Warum sollte man sowas bei einem von CubeMX generierten Code für ein
> 0815-ST-Boad tun?

Weil

a) Es vielleicht ein Problem mit dem HSE Oszillator gibt

b) Ich mit genau diesem Stück von Cube HAL erzeugten Code in meinem 
allerersten Projekt auf die Nase gefallen bin*. Ich traue diesem Rotz 
keine 5 Zentimeter weit.

* Der Fehler der mich damals betraf ist inzwischen von ST behoben 
worden.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Ich würde die Konfiguration der Taktquelle für diesen Test auch erstmal
> auf die einfachste Option reduzieren, und zwar alles auf 16 MHz mit HSI
> Oszillator stellen.

Ich glaub auch nich so recht, dass der Wurm da begraben liegt. Bin jetzt 
aber grad nochmal hierbei:

Harry L. schrieb:
> Geh das mal systematisch an!
> Generiere mit CubeMX ein leeres neues Projekt mit deinem Board als
> Template.
> Dann fügst du in die main-loop in main.c nur den folgenden Code ein:
> /* USER CODE BEGIN 3 */
>       HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
>       HAL_Delay(300);
>       HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
>       HAL_Delay(300);

Wobei ich auch da nicht so recht dran glauben kann, ich hab ja eben ein 
quasi leeres Projekt erstellt. Leer bis auf den Timer für ne PWM, die 
ich mir mit dem Oszi anguckte, anstelle die LED blinken zu lassen.

Johannes S. schrieb:
> bei mir leuchtet die auch rot (du meinst die Mehrfarbled?)

Genau die mein ich. Das scheint also auch normal zu sein....

Johannes S. schrieb:
> warum soll das gleiche Programm bei mir starten und bei ihm nicht?

Und dein blinky.bin läuft ja auch bei mir und macht das gleiche wie bei 
dir...

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> b) Ich mit genau diesem Stück von Cube HAL erzeugten Code in meinem
> allerersten Projekt auf die Nase gefallen bin*. Ich traue diesem Rotz
> keine 5 Zentimeter weit.

Ja das kenn ich auch noch, das führte dazu, dass ich die Boards erstmal 
ne lange Zeit aus der Hand legte. Aber nun scheint das Zeugs halbwegs zu 
laufen.

Es klappte vor kurzem ja noch alles fehlerfrei, und dann wie gesagt 
traten am nächsten Tag die genannten Probleme auf.

von Harry L. (mysth)


Lesenswert?

Stefanus F. schrieb:
> Weil
>
> a) Es vielleicht ein Problem mit dem HSE Oszillator gibt

Dann stellt man das im CubeMX um.

Stefanus F. schrieb:
> b) Ich mit genau diesem Stück von Cube HAL erzeugten Code in meinem
> allerersten Projekt auf die Nase gefallen bin*. Ich traue diesem Rotz
> keine 5 Zentimeter weit.

Kannst du ja für dichso halten, aber mir scheint eher, daß du das 
Konzept von CubeMX nicht wirklich verstanden hast, und auch HAL nur 
oberflächlich kennst.

Der TO hat aber nunmal ein Projekt mit CubeMX und HAL, und ihm dann zu 
raten, das durch solche manuellen Eingriffe an dieser Stelle kaputt zu 
machen ist kontraproduktiv.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Harry L. schrieb:
>> a) Es vielleicht ein Problem mit dem HSE Oszillator gibt
> Dann stellt man das im CubeMX um.

Ach nee, genau das habe ich doch empfohlen!

> Mir scheint eher, daß du das
> Konzept von CubeMX nicht wirklich verstanden hast, und auch HAL nur
> oberflächlich kennst.

Das hast du korrekt erkannt.

Wenn aber schon mein leeres Projekt, wo alles auf Default steht, auf dem 
nagelneuen fertigen Board von ST nicht einmal bis zum ersten Breakpoint 
(am Anfang der main() Funktion) kommt, dann kann ich sicher sein, dass 
das Problem nicht vor dem Bildschirm sitzt. Und so war es ja auch.

Mit Hilfe dieses Forums wurde der Fehler im Quelltext der HAL Library 
identifiziert, gemeldet und behoben. Und ich hatte meinen Anreiz, mal 
das Referenzhandbuch zu lesen, anstatt nur die Doku der HAL.

> Der TO hat aber nunmal ein Projekt mit CubeMX und HAL, und ihm dann zu
> raten, das durch solche manuellen Eingriffe an dieser Stelle kaputt zu
> machen ist kontraproduktiv.

Ich habe doch gar nicht von einem manuellen Eingriff geschrieben. 
Selbstverständlich sollte er die Taktkonfiguration in Cube MX 
einstellen. 16 MHz HSI ist technisch gesehen die einfachste Option, da 
schon durch den Hardware-Reset vorgegeben. Bei dieser kann am wenigsten 
schief gehen.

von Harry L. (mysth)


Lesenswert?

Stefanus F. schrieb:
> Harry L. schrieb:
>>> a) Es vielleicht ein Problem mit dem HSE Oszillator gibt
>> Dann stellt man das im CubeMX um.
>
> Ach nee, genau das habe ich doch empfohlen!
>
>> Mir scheint eher, daß du das
>> Konzept von CubeMX nicht wirklich verstanden hast, und auch HAL nur
>> oberflächlich kennst.
>
> Das hast du korrekt erkannt.
>
> Wenn aber schon mein leeres Projekt, wo alles auf Default steht, auf dem
> nagelneuen fertigen Board von ST nicht einmal bis zum ersten Breakpoint
> (am Anfang der main() Funktion) kommt, dann kann ich sicher sein, dass
> das Problem nicht vor dem Bildschirm sitzt. Und so war es ja auch.
>
> Mit Hilfe dieses Forums wurde der Fehler im Quelltext der HAL Library
> identifiziert, gemeldet und behoben. Und ich hatte meinen Anreiz, mal
> das Referenzhandbuch zu lesen, anstatt nur die Doku der HAL.
>
>> Der TO hat aber nunmal ein Projekt mit CubeMX und HAL, und ihm dann zu
>> raten, das durch solche manuellen Eingriffe an dieser Stelle kaputt zu
>> machen ist kontraproduktiv.
>
> Ich habe doch gar nicht von einem manuellen Eingriff geschrieben.
> Selbstverständlich sollte er die Taktkonfiguration in Cube MX
> einstellen. 16 MHz HSI ist technisch gesehen die einfachste Option, da
> schon durch den Hardware-Reset vorgegeben. Bei dieser kann am wenigsten
> schief gehen.

Hat aber alles nix mit dem Problem zu tun.
Wenn ein leeres Projekt mit minimalem Blink-Code auf einem ST-Board 
nicht läuft, ist der Fehler wohl eher in der Hardware zu suchen.
USB-Kabel/Port oder das Board selbst.

Oder willst du mir erzählen, daß du in so einer minimal-Konfiguration 
immer noch Software-Fehler vermutest, die solche gravierenden 
Auswirkungen haben?

von Stefan F. (Gast)


Lesenswert?

Harry L. schrieb:
> Hat aber alles nix mit dem Problem zu tun.
> Wenn ein leeres Projekt mit minimalem Blink-Code auf einem ST-Board
> nicht läuft, ist der Fehler wohl eher in der Hardware zu suchen.

Davon gehe ich aus.

Indem wir den HSE Oszillator durch HSI austauschen finden wir heraus, ob 
die Problemursache beim Oszillator liegt.

> Oder willst du mir erzählen, daß du in so einer minimal-Konfiguration
> immer noch Software-Fehler vermutest, die solche gravierenden
> Auswirkungen haben?

Die Minimalkonfiguration dient dazu, die Möglichkeit von Softwarefehlern 
weitgehend auszuschließen. Deswegen habe ich dem Vorschlag ausdrücklich 
zugestimmt.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Indem wir den HSE Oszillator durch HSI austauschen finden wir heraus, ob
> die Problemursache beim Oszillator liegt.

Sollte dann aber nicht eigentlich nichts funktionieren, wenn der Fehler 
da läge?

Ich bin immer noch am erstellen, mein Rechner ist heute irgendwie 
hirnerweichend langsam. Teilweise braucht er mehr als 10 sekunden um von 
einem Fenster zu nem anderen zu wechseln und die Inhalte im Fenster 
bauen sich auch nur nach und nach auf.... Zwischendrin hängt die IDE 
dann auch gern mal für ne halbe Minute oder so mit "keine 
Rückmeldung"..... lustigerweise läuft wenn ich dann den Taskmanager 
öffne wieder alles flussig. Aber der Virenscanner findet auch nix...

SO endlich ist es soweit.

Ich hatte nun mit Cube ein neues Projekt für das Board erstellt. Dann 
hab ich die unter "Pinout" alles zurückgesetzt. Clock hab ich wie 
gewünscht auf HSI und bin die PLL umgangen und gehe direkt mit 16MHz auf 
den Syscklock.

Harry L. schrieb:
> HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
>       HAL_Delay(300);
>       HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
>       HAL_Delay(300);
>
> Die Port- und Pin-Bezeichnungen musst du natürlich auf deine Hardware
> anpassen.
> In der generierten main.h sind die bereits für die auf dem Board
> istallierten LEDs definiert.

Irgendwie sind da keine LEDs definiert in der main.h. Aber laut dem von 
mir verlinkten PDF sollte die LED an PI1 stitzen. Das wäre dann d13 am 
Arduinoconnector. Bei dem blinky von johannes sehe ich sowohl an d13 auf 
dem Oszi etwas und die LED blinken.
1
      HAL_GPIO_WritePin(GPIOI, 0, GPIO_PIN_SET);
2
      HAL_Delay(300);
3
      HAL_GPIO_WritePin(GPIOI, 0, GPIO_PIN_RESET);
4
      HAL_Delay(300);
hab ich stattdessen geschrieben. Aber irgendwie tut sich nix. Also ich 
hab dass in den UserCode3-Teil geschmissen ansonsten das von Cube 
erstellte aber unverändert gelassen. Wobei nicht ganz:
1
void SVC_Handler(void)
2
{
3
  /* USER CODE BEGIN SVCall_IRQn 0 */
4
5
  /* USER CODE END SVCall_IRQn 0 */
6
 // HAL_SVCall_IRQHandler
7
  /* USER CODE BEGIN SVCall_IRQn 1 */
8
9
  /* USER CODE END SVCall_IRQn 1 */
10
}

HAL_SVCall_IRQHandler hab ich wieder auskommentiert, weil Cube das ohne 
Semikolon und sonstigen Schnickschnack den der Programmierer gern sieht, 
erzeugt.

von J. T. (chaoskind)


Lesenswert?

Wie soll das auch gehen. Ich seh gerade das überhaupt keine GPIO inits 
erzeugt wurden..

von Harry L. (mysth)


Lesenswert?

J. T. schrieb:
> Ich hatte nun mit Cube ein neues Projekt für das Board erstellt. Dann
> hab ich die unter "Pinout" alles zurückgesetzt.

J. T. schrieb:
> Irgendwie sind da keine LEDs definiert in der main.h.

Natürlich nicht, wenn du vorher im CubeMX alles zurückgesetzt hast.

Deshalb: nochmal von Vorne und alle Vorseinstellungen unverändert 
übernehmen.

Dann nur noch den Blink-Code in der main.c einfügen.

von Stefan F. (Gast)


Lesenswert?

J. T. schrieb:
> mein Rechner ist heute irgendwie hirnerweichend langsam.
> lustigerweise läuft wenn ich dann den Taskmanager
> öffne wieder alles flussig.

Das hatte ich vor ein paar Wochen am Arbeitsplatz, wollte mir kein 
Kollege glauben, bis sie selbst geguckt haben.

Das Problem war zwei Tage später von selbst wieder verschwunden. keine 
Ahnung, woran es gelegen hat. Mein Chef vermutet ein fehlerhaftes 
Windows Update. Ich bin mir aber nicht dessen bewusst, unmittelbar 
vorher ein installiert zu haben.

von J. T. (chaoskind)


Lesenswert?

Ich beiß gleich in die Tischkante.... Um 21:42 auf New Project geklickt 
im Cube, nun sagt die Uhr 21:46 und es ist immer noch das Auswahlfenster 
mit bläulich unterlegtem "New Project" zu sehen. Ah inzwischen sagt er 
auch "keine Rückmeldung"

P.S. und just wenn ich den Taskmanager in den Vordergrund hole, kommt 
die Auswahl zum Vorschein.... da stimmt doch was ganz gewaltig nicht...

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

So nun einfach ein neues Projekt bei Cube erstellt, die 
Clockeinstellungen musste ich reseten, da die von Cube generierten 
ungültig waren. Des weiteren musste ich "MX_SDMMC1_SD_Init();" 
auskommentieren, da er da in den Errorloop gesprungen ist.
1
  MX_GPIO_Init();
2
  MX_ADC3_Init();
3
  MX_DCMI_Init();
4
  MX_ETH_Init();
5
  MX_FMC_Init();
6
  MX_I2C1_Init();
7
  MX_I2C3_Init();
8
  MX_LTDC_Init();
9
  MX_QUADSPI_Init();
10
  MX_RTC_Init();
11
  MX_SAI2_Init();
12
 // MX_SDMMC1_SD_Init();
13
  MX_SPDIFRX_Init();
14
  MX_SPI2_Init();
15
  MX_TIM1_Init();
16
  MX_TIM2_Init();
17
  MX_TIM3_Init();
18
  MX_TIM5_Init();
19
  MX_TIM8_Init();
20
  MX_TIM12_Init();
21
  MX_USART1_UART_Init();
22
  MX_USART6_UART_Init();
23
  MX_USB_OTG_FS_USB_Init();
24
  MX_USB_OTG_HS_USB_Init();
25
  /* USER CODE BEGIN 2 */
26
27
  /* USER CODE END 2 */
28
29
  /* Infinite loop */
30
  /* USER CODE BEGIN WHILE */
31
  while (1)
32
  {
33
34
  /* USER CODE END WHILE */
35
36
  /* USER CODE BEGIN 3 */
37
      HAL_GPIO_WritePin(GPIOI, 0, GPIO_PIN_SET);
38
      HAL_Delay(300);
39
      HAL_GPIO_WritePin(GPIOI, 0, GPIO_PIN_RESET);
40
      HAL_Delay(300);
41
  }
42
  /* USER CODE END 3 */
43
44
}

trotzdem blinkt keine LED

von Stefan F. (Gast)


Lesenswert?

Kommentiere mal alle init Funktionen (außer die für GPIO) aus. Wenn es 
dann immer noch nicht blinkt, ist dein Board wohl defekt.

von Harry L. (mysth)


Lesenswert?

Stefanus F. schrieb:
> Kommentiere mal alle init Funktionen (außer die für GPIO) aus. Wenn es
> dann immer noch nicht blinkt, ist dein Board wohl defekt.

Das wird nix!
HAL_Delay benötigt den Sysick (vom Timer)

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Kommentiere mal alle init Funktionen (außer die für GPIO) aus. Wenn es
> dann immer noch nicht blinkt, ist dein Board wohl defekt.

Es blinkt ja vor allem, wenn ich den das binary von Johannes lade.

von J. T. (chaoskind)


Lesenswert?

Harry L. schrieb:
> HAL_Delay benötigt den Sysick (vom Timer)

Das könnt man zur Not ja auch mit ner Zählschleife ersetzen, wenn es 
erst mal nur um die Verzögerung fürs Blinken geht.

von Stefan F. (Gast)


Lesenswert?

Harry L. schrieb:
>> Kommentiere mal alle init Funktionen (außer die für GPIO) aus. Wenn es
>> dann immer noch nicht blinkt, ist dein Board wohl defekt.
> Das wird nix!
> HAL_Delay benötigt den Sysick (vom Timer)

Ach ja, richtig.

Was ist eigentlich GPIOI? Ist dessen Wert richtig?

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Was ist eigentlich GPIOI? Ist dessen Wert richtig?

Ich bekomme dafür zumindest keine Fehlermeldung, und laut 
Boardbeschreibung sitzt die LED an Porti 1, dort konnte ich eine im Takt 
des Blinkens wecheselnde Spannung messen, als ich das blinkende binary 
von johannes flashte.

von Harry L. (mysth)


Lesenswert?

Stefanus F. schrieb:
> Harry L. schrieb:
>>> Kommentiere mal alle init Funktionen (außer die für GPIO) aus. Wenn es
>>> dann immer noch nicht blinkt, ist dein Board wohl defekt.
>> Das wird nix!
>> HAL_Delay benötigt den Sysick (vom Timer)
>
> Ach ja, richtig.
>
> Was ist eigentlich GPIOI? Ist dessen Wert richtig?

Das sehe ich genauso.
So ist das nicht im Sinne des Erfinders.

In der main.h solltest du sowas in der Art finden:
1
/* Private define ------------------------------------------------------------*/
2
3
#define LED_Pin GPIO_PIN_13
4
#define LED_GPIO_Port GPIOC

von Stefan F. (Gast)


Lesenswert?

J. T. schrieb:
> Es blinkt ja vor allem, wenn ich den das binary von Johannes lade.

Wenn alle Stricke reißen würde ich in Erwägung ziehen, dass deine HAL 
Library fehlerhaft ist.

Du kannst das Board mit deiner IDE auch "ohne Firmware" programmieren. 
Sicher findest du irgendwo im Netz ein minimales Led-Blinker Beispiel 
für deinen STM.

von J. T. (chaoskind)


Lesenswert?

Harry L. schrieb:
> In der main.h solltest du sowas in der Art finden:/* Private define
> ------------------------------------------------------------*/
>
> #define LED_Pin GPIO_PIN_13
> #define LED_GPIO_Port GPIOC

Leider taucht nichts auf in der main.h. Weder die manuelle Suche noch 
die Suche der IDE brachte die Zeichenfolge "led" zutage.(case sensitive 
war bei der Suche deaktiviert).

Das ist alles was in der main.h steht:
1
/**
2
  ******************************************************************************
3
  * @file           : main.h
4
  * @brief          : Header for main.c file.
5
  *                   This file contains the common defines of the application.
6
  ******************************************************************************
7
  ** This notice applies to any and all portions of this file
8
  * that are not between comment pairs USER CODE BEGIN and
9
  * USER CODE END. Other portions of this file, whether 
10
  * inserted by the user or by software development tools
11
  * are owned by their respective copyright owners.
12
  *
13
  * COPYRIGHT(c) 2018 STMicroelectronics
14
  *
15
  * Redistribution and use in source and binary forms, with or without modification,
16
  * are permitted provided that the following conditions are met:
17
  *   1. Redistributions of source code must retain the above copyright notice,
18
  *      this list of conditions and the following disclaimer.
19
  *   2. Redistributions in binary form must reproduce the above copyright notice,
20
  *      this list of conditions and the following disclaimer in the documentation
21
  *      and/or other materials provided with the distribution.
22
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
23
  *      may be used to endorse or promote products derived from this software
24
  *      without specific prior written permission.
25
  *
26
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
30
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
  *
37
  ******************************************************************************
38
  */
39
40
/* Define to prevent recursive inclusion -------------------------------------*/
41
#ifndef __MAIN_H__
42
#define __MAIN_H__
43
44
/* Includes ------------------------------------------------------------------*/
45
46
/* USER CODE BEGIN Includes */
47
48
/* USER CODE END Includes */
49
50
/* Private define ------------------------------------------------------------*/
51
52
#define LCD_B0_Pin GPIO_PIN_4
53
#define LCD_B0_GPIO_Port GPIOE
54
#define OTG_HS_OverCurrent_Pin GPIO_PIN_3
55
#define OTG_HS_OverCurrent_GPIO_Port GPIOE
56
#define QSPI_D2_Pin GPIO_PIN_2
57
#define QSPI_D2_GPIO_Port GPIOE
58
#define RMII_TXD1_Pin GPIO_PIN_14
59
#define RMII_TXD1_GPIO_Port GPIOG
60
#define FMC_NBL1_Pin GPIO_PIN_1
61
#define FMC_NBL1_GPIO_Port GPIOE
62
#define FMC_NBL0_Pin GPIO_PIN_0
63
#define FMC_NBL0_GPIO_Port GPIOE
64
#define ARDUINO_SCL_D15_Pin GPIO_PIN_8
65
#define ARDUINO_SCL_D15_GPIO_Port GPIOB
66
#define ULPI_D7_Pin GPIO_PIN_5
67
#define ULPI_D7_GPIO_Port GPIOB
68
#define ARDUINO_PWM_D3_Pin GPIO_PIN_4
69
#define ARDUINO_PWM_D3_GPIO_Port GPIOB
70
#define SWO_Pin GPIO_PIN_3
71
#define SWO_GPIO_Port GPIOB
72
#define SPDIF_RX0_Pin GPIO_PIN_7
73
#define SPDIF_RX0_GPIO_Port GPIOD
74
#define SDMMC_CK_Pin GPIO_PIN_12
75
#define SDMMC_CK_GPIO_Port GPIOC
76
#define ARDUINO_PWM_D9_Pin GPIO_PIN_15
77
#define ARDUINO_PWM_D9_GPIO_Port GPIOA
78
#define SWCLK_Pin GPIO_PIN_14
79
#define SWCLK_GPIO_Port GPIOA
80
#define SWDIO_Pin GPIO_PIN_13
81
#define SWDIO_GPIO_Port GPIOA
82
#define DCMI_D6_Pin GPIO_PIN_5
83
#define DCMI_D6_GPIO_Port GPIOE
84
#define DCMI_D7_Pin GPIO_PIN_6
85
#define DCMI_D7_GPIO_Port GPIOE
86
#define RMII_TXD0_Pin GPIO_PIN_13
87
#define RMII_TXD0_GPIO_Port GPIOG
88
#define ARDUINO_SDA_D14_Pin GPIO_PIN_9
89
#define ARDUINO_SDA_D14_GPIO_Port GPIOB
90
#define VCP_RX_Pin GPIO_PIN_7
91
#define VCP_RX_GPIO_Port GPIOB
92
#define QSPI_NCS_Pin GPIO_PIN_6
93
#define QSPI_NCS_GPIO_Port GPIOB
94
#define FMC_SDNCAS_Pin GPIO_PIN_15
95
#define FMC_SDNCAS_GPIO_Port GPIOG
96
#define RMII_TX_EN_Pin GPIO_PIN_11
97
#define RMII_TX_EN_GPIO_Port GPIOG
98
#define LCD_B1_Pin GPIO_PIN_13
99
#define LCD_B1_GPIO_Port GPIOJ
100
#define OTG_FS_VBUS_Pin GPIO_PIN_12
101
#define OTG_FS_VBUS_GPIO_Port GPIOJ
102
#define Audio_INT_Pin GPIO_PIN_6
103
#define Audio_INT_GPIO_Port GPIOD
104
#define FMC_D2_Pin GPIO_PIN_0
105
#define FMC_D2_GPIO_Port GPIOD
106
#define SDMMC_D3_Pin GPIO_PIN_11
107
#define SDMMC_D3_GPIO_Port GPIOC
108
#define SDMMC_D2_Pin GPIO_PIN_10
109
#define SDMMC_D2_GPIO_Port GPIOC
110
#define OTG_FS_P_Pin GPIO_PIN_12
111
#define OTG_FS_P_GPIO_Port GPIOA
112
#define NC1_Pin GPIO_PIN_8
113
#define NC1_GPIO_Port GPIOI
114
#define SAI2_MCLKA_Pin GPIO_PIN_4
115
#define SAI2_MCLKA_GPIO_Port GPIOI
116
#define LCD_DE_Pin GPIO_PIN_7
117
#define LCD_DE_GPIO_Port GPIOK
118
#define LCD_B7_Pin GPIO_PIN_6
119
#define LCD_B7_GPIO_Port GPIOK
120
#define LCD_B6_Pin GPIO_PIN_5
121
#define LCD_B6_GPIO_Port GPIOK
122
#define LCD_B4_Pin GPIO_PIN_12
123
#define LCD_B4_GPIO_Port GPIOG
124
#define SAI2_SDB_Pin GPIO_PIN_10
125
#define SAI2_SDB_GPIO_Port GPIOG
126
#define LCD_B2_Pin GPIO_PIN_14
127
#define LCD_B2_GPIO_Port GPIOJ
128
#define OTG_FS_PowerSwitchOn_Pin GPIO_PIN_5
129
#define OTG_FS_PowerSwitchOn_GPIO_Port GPIOD
130
#define DCMI_D5_Pin GPIO_PIN_3
131
#define DCMI_D5_GPIO_Port GPIOD
132
#define FMC_D3_Pin GPIO_PIN_1
133
#define FMC_D3_GPIO_Port GPIOD
134
#define ARDUINO_D7_Pin GPIO_PIN_3
135
#define ARDUINO_D7_GPIO_Port GPIOI
136
#define ARDUINO_D8_Pin GPIO_PIN_2
137
#define ARDUINO_D8_GPIO_Port GPIOI
138
#define OTG_FS_N_Pin GPIO_PIN_11
139
#define OTG_FS_N_GPIO_Port GPIOA
140
#define uSD_Detect_Pin GPIO_PIN_13
141
#define uSD_Detect_GPIO_Port GPIOC
142
#define FMC_A0_Pin GPIO_PIN_0
143
#define FMC_A0_GPIO_Port GPIOF
144
#define SAI2_SCKA_Pin GPIO_PIN_5
145
#define SAI2_SCKA_GPIO_Port GPIOI
146
#define SAI2_FSA_Pin GPIO_PIN_7
147
#define SAI2_FSA_GPIO_Port GPIOI
148
#define LCD_HSYNC_Pin GPIO_PIN_10
149
#define LCD_HSYNC_GPIO_Port GPIOI
150
#define SAI2_SDA_Pin GPIO_PIN_6
151
#define SAI2_SDA_GPIO_Port GPIOI
152
#define LCD_B5_Pin GPIO_PIN_4
153
#define LCD_B5_GPIO_Port GPIOK
154
#define LCD_BL_CTRL_Pin GPIO_PIN_3
155
#define LCD_BL_CTRL_GPIO_Port GPIOK
156
#define DCMI_VSYNC_Pin GPIO_PIN_9
157
#define DCMI_VSYNC_GPIO_Port GPIOG
158
#define LCD_B3_Pin GPIO_PIN_15
159
#define LCD_B3_GPIO_Port GPIOJ
160
#define OTG_FS_OverCurrent_Pin GPIO_PIN_4
161
#define OTG_FS_OverCurrent_GPIO_Port GPIOD
162
#define SDMMC_CMD_Pin GPIO_PIN_2
163
#define SDMMC_CMD_GPIO_Port GPIOD
164
#define TP3_Pin GPIO_PIN_15
165
#define TP3_GPIO_Port GPIOH
166
#define ARDUINO_SCK_D13_Pin GPIO_PIN_1
167
#define ARDUINO_SCK_D13_GPIO_Port GPIOI
168
#define OTG_FS_ID_Pin GPIO_PIN_10
169
#define OTG_FS_ID_GPIO_Port GPIOA
170
#define RCC_OSC32_IN_Pin GPIO_PIN_14
171
#define RCC_OSC32_IN_GPIO_Port GPIOC
172
#define FMC_A1_Pin GPIO_PIN_1
173
#define FMC_A1_GPIO_Port GPIOF
174
#define LCD_DISP_Pin GPIO_PIN_12
175
#define LCD_DISP_GPIO_Port GPIOI
176
#define LCD_VSYNC_Pin GPIO_PIN_9
177
#define LCD_VSYNC_GPIO_Port GPIOI
178
#define DCMI_PWR_EN_Pin GPIO_PIN_13
179
#define DCMI_PWR_EN_GPIO_Port GPIOH
180
#define DCMI_D4_Pin GPIO_PIN_14
181
#define DCMI_D4_GPIO_Port GPIOH
182
#define ARDUINO_PWM_CS_D10_Pin GPIO_PIN_0
183
#define ARDUINO_PWM_CS_D10_GPIO_Port GPIOI
184
#define VCP_TX_Pin GPIO_PIN_9
185
#define VCP_TX_GPIO_Port GPIOA
186
#define RCC_OSC32_OUT_Pin GPIO_PIN_15
187
#define RCC_OSC32_OUT_GPIO_Port GPIOC
188
#define B_USER_Pin GPIO_PIN_11
189
#define B_USER_GPIO_Port GPIOI
190
#define LCD_G6_Pin GPIO_PIN_1
191
#define LCD_G6_GPIO_Port GPIOK
192
#define LCD_G7_Pin GPIO_PIN_2
193
#define LCD_G7_GPIO_Port GPIOK
194
#define ARDUINO_PWM_D5_Pin GPIO_PIN_8
195
#define ARDUINO_PWM_D5_GPIO_Port GPIOA
196
#define OSC_25M_Pin GPIO_PIN_0
197
#define OSC_25M_GPIO_Port GPIOH
198
#define FMC_A2_Pin GPIO_PIN_2
199
#define FMC_A2_GPIO_Port GPIOF
200
#define LCD_INT_Pin GPIO_PIN_13
201
#define LCD_INT_GPIO_Port GPIOI
202
#define LCD_R0_Pin GPIO_PIN_15
203
#define LCD_R0_GPIO_Port GPIOI
204
#define LCD_G4_Pin GPIO_PIN_11
205
#define LCD_G4_GPIO_Port GPIOJ
206
#define LCD_G5_Pin GPIO_PIN_0
207
#define LCD_G5_GPIO_Port GPIOK
208
#define ARDUINO_RX_D0_Pin GPIO_PIN_7
209
#define ARDUINO_RX_D0_GPIO_Port GPIOC
210
#define FMC_A3_Pin GPIO_PIN_3
211
#define FMC_A3_GPIO_Port GPIOF
212
#define LCD_CLK_Pin GPIO_PIN_14
213
#define LCD_CLK_GPIO_Port GPIOI
214
#define ULPI_NXT_Pin GPIO_PIN_4
215
#define ULPI_NXT_GPIO_Port GPIOH
216
#define LCD_G1_Pin GPIO_PIN_8
217
#define LCD_G1_GPIO_Port GPIOJ
218
#define LCD_G3_Pin GPIO_PIN_10
219
#define LCD_G3_GPIO_Port GPIOJ
220
#define FMC_SDCLK_Pin GPIO_PIN_8
221
#define FMC_SDCLK_GPIO_Port GPIOG
222
#define ARDUINO_TX_D1_Pin GPIO_PIN_6
223
#define ARDUINO_TX_D1_GPIO_Port GPIOC
224
#define FMC_A4_Pin GPIO_PIN_4
225
#define FMC_A4_GPIO_Port GPIOF
226
#define FMC_SDNME_Pin GPIO_PIN_5
227
#define FMC_SDNME_GPIO_Port GPIOH
228
#define FMC_SDNE0_Pin GPIO_PIN_3
229
#define FMC_SDNE0_GPIO_Port GPIOH
230
#define LCD_G0_Pin GPIO_PIN_7
231
#define LCD_G0_GPIO_Port GPIOJ
232
#define LCD_G2_Pin GPIO_PIN_9
233
#define LCD_G2_GPIO_Port GPIOJ
234
#define ARDUINO_D4_Pin GPIO_PIN_7
235
#define ARDUINO_D4_GPIO_Port GPIOG
236
#define ARDUINO_D2_Pin GPIO_PIN_6
237
#define ARDUINO_D2_GPIO_Port GPIOG
238
#define ARDUINO_A4_Pin GPIO_PIN_7
239
#define ARDUINO_A4_GPIO_Port GPIOF
240
#define ARDUINO_A5_Pin GPIO_PIN_6
241
#define ARDUINO_A5_GPIO_Port GPIOF
242
#define FMC_A5_Pin GPIO_PIN_5
243
#define FMC_A5_GPIO_Port GPIOF
244
#define NC2_Pin GPIO_PIN_2
245
#define NC2_GPIO_Port GPIOH
246
#define LCD_R7_Pin GPIO_PIN_6
247
#define LCD_R7_GPIO_Port GPIOJ
248
#define FMC_D1_Pin GPIO_PIN_15
249
#define FMC_D1_GPIO_Port GPIOD
250
#define ULPI_D6_Pin GPIO_PIN_13
251
#define ULPI_D6_GPIO_Port GPIOB
252
#define FMC_D15_Pin GPIO_PIN_10
253
#define FMC_D15_GPIO_Port GPIOD
254
#define ARDUINO_A1_Pin GPIO_PIN_10
255
#define ARDUINO_A1_GPIO_Port GPIOF
256
#define ARDUINO_A2_Pin GPIO_PIN_9
257
#define ARDUINO_A2_GPIO_Port GPIOF
258
#define ARDUINO_A3_Pin GPIO_PIN_8
259
#define ARDUINO_A3_GPIO_Port GPIOF
260
#define FMC_SDCKE0_Pin GPIO_PIN_3
261
#define FMC_SDCKE0_GPIO_Port GPIOC
262
#define FMC_D0_Pin GPIO_PIN_14
263
#define FMC_D0_GPIO_Port GPIOD
264
#define ULPI_D5_Pin GPIO_PIN_12
265
#define ULPI_D5_GPIO_Port GPIOB
266
#define FMC_D14_Pin GPIO_PIN_9
267
#define FMC_D14_GPIO_Port GPIOD
268
#define FMC_D13_Pin GPIO_PIN_8
269
#define FMC_D13_GPIO_Port GPIOD
270
#define ULPI_STP_Pin GPIO_PIN_0
271
#define ULPI_STP_GPIO_Port GPIOC
272
#define RMII_MDC_Pin GPIO_PIN_1
273
#define RMII_MDC_GPIO_Port GPIOC
274
#define ULPI_DIR_Pin GPIO_PIN_2
275
#define ULPI_DIR_GPIO_Port GPIOC
276
#define FMC_A6_Pin GPIO_PIN_12
277
#define FMC_A6_GPIO_Port GPIOF
278
#define FMC_A11_Pin GPIO_PIN_1
279
#define FMC_A11_GPIO_Port GPIOG
280
#define FMC_A9_Pin GPIO_PIN_15
281
#define FMC_A9_GPIO_Port GPIOF
282
#define LCD_R5_Pin GPIO_PIN_4
283
#define LCD_R5_GPIO_Port GPIOJ
284
#define QSPI_D1_Pin GPIO_PIN_12
285
#define QSPI_D1_GPIO_Port GPIOD
286
#define QSPI_D3_Pin GPIO_PIN_13
287
#define QSPI_D3_GPIO_Port GPIOD
288
#define EXT_RST_Pin GPIO_PIN_3
289
#define EXT_RST_GPIO_Port GPIOG
290
#define RMII_RXER_Pin GPIO_PIN_2
291
#define RMII_RXER_GPIO_Port GPIOG
292
#define LCD_R6_Pin GPIO_PIN_5
293
#define LCD_R6_GPIO_Port GPIOJ
294
#define DCMI_D3_Pin GPIO_PIN_12
295
#define DCMI_D3_GPIO_Port GPIOH
296
#define RMII_REF_CLK_Pin GPIO_PIN_1
297
#define RMII_REF_CLK_GPIO_Port GPIOA
298
#define ARDUINO_A0_Pin GPIO_PIN_0
299
#define ARDUINO_A0_GPIO_Port GPIOA
300
#define DCMI_HSYNC_Pin GPIO_PIN_4
301
#define DCMI_HSYNC_GPIO_Port GPIOA
302
#define RMII_RXD0_Pin GPIO_PIN_4
303
#define RMII_RXD0_GPIO_Port GPIOC
304
#define FMC_A7_Pin GPIO_PIN_13
305
#define FMC_A7_GPIO_Port GPIOF
306
#define FMC_A10_Pin GPIO_PIN_0
307
#define FMC_A10_GPIO_Port GPIOG
308
#define LCD_R4_Pin GPIO_PIN_3
309
#define LCD_R4_GPIO_Port GPIOJ
310
#define FMC_D5_Pin GPIO_PIN_8
311
#define FMC_D5_GPIO_Port GPIOE
312
#define QSPI_D0_Pin GPIO_PIN_11
313
#define QSPI_D0_GPIO_Port GPIOD
314
#define FMC_BA1_Pin GPIO_PIN_5
315
#define FMC_BA1_GPIO_Port GPIOG
316
#define FMC_BA0_Pin GPIO_PIN_4
317
#define FMC_BA0_GPIO_Port GPIOG
318
#define LCD_SCL_Pin GPIO_PIN_7
319
#define LCD_SCL_GPIO_Port GPIOH
320
#define DCMI_D0_Pin GPIO_PIN_9
321
#define DCMI_D0_GPIO_Port GPIOH
322
#define DCMI_D2_Pin GPIO_PIN_11
323
#define DCMI_D2_GPIO_Port GPIOH
324
#define RMII_MDIO_Pin GPIO_PIN_2
325
#define RMII_MDIO_GPIO_Port GPIOA
326
#define ULPI_CLK_Pin GPIO_PIN_5
327
#define ULPI_CLK_GPIO_Port GPIOA
328
#define RMII_RXD1_Pin GPIO_PIN_5
329
#define RMII_RXD1_GPIO_Port GPIOC
330
#define FMC_A8_Pin GPIO_PIN_14
331
#define FMC_A8_GPIO_Port GPIOF
332
#define LCD_R3_Pin GPIO_PIN_2
333
#define LCD_R3_GPIO_Port GPIOJ
334
#define FMC_SDNRAS_Pin GPIO_PIN_11
335
#define FMC_SDNRAS_GPIO_Port GPIOF
336
#define FMC_D6_Pin GPIO_PIN_9
337
#define FMC_D6_GPIO_Port GPIOE
338
#define FMC_D8_Pin GPIO_PIN_11
339
#define FMC_D8_GPIO_Port GPIOE
340
#define FMC_D11_Pin GPIO_PIN_14
341
#define FMC_D11_GPIO_Port GPIOE
342
#define ULPI_D3_Pin GPIO_PIN_10
343
#define ULPI_D3_GPIO_Port GPIOB
344
#define ARDUINO_PWM_D6_Pin GPIO_PIN_6
345
#define ARDUINO_PWM_D6_GPIO_Port GPIOH
346
#define LCD_SDA_Pin GPIO_PIN_8
347
#define LCD_SDA_GPIO_Port GPIOH
348
#define DCMI_D1_Pin GPIO_PIN_10
349
#define DCMI_D1_GPIO_Port GPIOH
350
#define ULPI_D0_Pin GPIO_PIN_3
351
#define ULPI_D0_GPIO_Port GPIOA
352
#define RMII_CRS_DV_Pin GPIO_PIN_7
353
#define RMII_CRS_DV_GPIO_Port GPIOA
354
#define ULPI_D2_Pin GPIO_PIN_1
355
#define ULPI_D2_GPIO_Port GPIOB
356
#define ULPI_D1_Pin GPIO_PIN_0
357
#define ULPI_D1_GPIO_Port GPIOB
358
#define LCD_R1_Pin GPIO_PIN_0
359
#define LCD_R1_GPIO_Port GPIOJ
360
#define LCD_R2_Pin GPIO_PIN_1
361
#define LCD_R2_GPIO_Port GPIOJ
362
#define FMC_D4_Pin GPIO_PIN_7
363
#define FMC_D4_GPIO_Port GPIOE
364
#define FMC_D7_Pin GPIO_PIN_10
365
#define FMC_D7_GPIO_Port GPIOE
366
#define FMC_D9_Pin GPIO_PIN_12
367
#define FMC_D9_GPIO_Port GPIOE
368
#define FMC_D12_Pin GPIO_PIN_15
369
#define FMC_D12_GPIO_Port GPIOE
370
#define FMC_D10_Pin GPIO_PIN_13
371
#define FMC_D10_GPIO_Port GPIOE
372
#define ULPI_D4_Pin GPIO_PIN_11
373
#define ULPI_D4_GPIO_Port GPIOB
374
#define ARDUINO_MISO_D12_Pin GPIO_PIN_14
375
#define ARDUINO_MISO_D12_GPIO_Port GPIOB
376
#define ARDUINO_MOSI_PWM_D11_Pin GPIO_PIN_15
377
#define ARDUINO_MOSI_PWM_D11_GPIO_Port GPIOB
378
379
/* ########################## Assert Selection ############################## */
380
/**
381
  * @brief Uncomment the line below to expanse the "assert_param" macro in the 
382
  *        HAL drivers code
383
  */
384
/* #define USE_FULL_ASSERT    1U */
385
386
/* USER CODE BEGIN Private defines */
387
388
/* USER CODE END Private defines */
389
390
#ifdef __cplusplus
391
 extern "C" {
392
#endif
393
void _Error_Handler(char *, int);
394
395
#define Error_Handler() _Error_Handler(__FILE__, __LINE__)
396
#ifdef __cplusplus
397
}
398
#endif
399
400
#endif /* __MAIN_H__ */
401
402
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

von Stefan F. (Gast)


Lesenswert?

Sieht so aus, als hättest du in Cube MX den Pin mit der LED nicht 
konfiguriert und beschriftet.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Du kannst das Board mit deiner IDE auch "ohne Firmware" programmieren.
> Sicher findest du irgendwo im Netz ein minimales Led-Blinker Beispiel
> für deinen STM.

Es blinkt doch aber... Mir gehts auch gar nicht ums blinken. Die 
Programme die ich flashe, laufen ja alle soweit. Wenn sie denn starten. 
Und wie ich sie zum starten bringe habe ich ja nun oft genug 
beschrieben.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Sieht so aus, als hättest du in Cube MX den Pin mit der LED nicht
> konfiguriert und beschriftet.

Ja ich hab einfach ein neues File erstellen lassen und nichts dran 
geändert, ausser den weiter oben genannten Änderungen an den 
Clockeinstellungen

von Harry L. (mysth)


Lesenswert?

Da sind doch alle Pin&Port-Definitionen.
Welche davon zu deiner LED gehört lässt sich im Schaltplan ablesen.
Für jeen definierten Pin gibt es ein Paar aus Pin- und Port-Definition 
und die Zuordnung der Namen zu den Pins siehst du im CueMX

Stefanus F. schrieb:
> Wenn alle Stricke reißen würde ich in Erwägung ziehen, dass deine HAL
> Library fehlerhaft ist.

...ja, nee...is klar.
ich bezweifel ja nicht, daß in HAL noch Fehler verborgen sind, aber ganz 
sicher nicht in diesen Trivial-Funktionen.

M.M.n passen die Parameter von HAL_GPIO_WritePin einfach nicht.
Das wäre auch ohne HAL nicht anders.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

Port I1 ist richtig für die LED, den tickert auch mein blinky.
Ich verstehe den Aufriss mit den Takten und CubeMX Codes auch nicht, das 
gleiche Programm startet bei mir sofort und bei JT erst nach Zugriffen 
vom STLink. Also muss doch eher irgendwas mit dem STLink oder 
irgendeiner Bootconfig faul sein.

von J. T. (chaoskind)


Lesenswert?

Harry L. schrieb:
> Welche davon zu deiner LED gehört lässt sich im Schaltplan ablesen.

Laut Schaltplan ist es PI1 siehe ich meine seite 19 wars, in dem weiter 
oben von mir angehängten PDF.

von Johannes S. (Gast)


Lesenswert?

Über den virtuellen Comport gibt mein Programm beim Start noch ein Hello 
aus, 9600 oder 115200 bps.

von J. T. (chaoskind)


Lesenswert?

In CubeMX gucke ich unter "Configuration" in "System" in "GPIO", dort 
taucht PI1 nirgendwo auf... Also liegt der Fehler irgendwo in Cube, dass 
der GPIO einfach nicht konfiguriert ist, somit ist erklärt wieso mein 
blinky nicht blinkt, das andere aber schon.

Aber um es nochmal zu betonen, das blinken ist überhaupt nicht das 
Problem. Mein erstes gepostetes Program malt auch hübscheste Muster aufs 
LCD, nur ist der Startvorgang halt minimal unkomfortabel.

von J. T. (chaoskind)


Lesenswert?

Johannes S. schrieb:
> Über den virtuellen Comport gibt mein Programm beim Start noch ein Hello
> aus, 9600 oder 115200 bps.

Dein Hello macht mein DISCO_F746 zum Lügner :D

Aber auf 9600 kann ich es problemlos empfangen.

von Johannes S. (Gast)


Angehängte Dateien:

Lesenswert?

ja, ist aber nur ein konstanter Text, ich könnte dein Board auch zum 
Xeon machen :)
Die Led an PI1 ist im Cube für das Board nicht konfiguriert, da liegt 
Arduino SPI drauf und wird nicht als Output konfiguriert, müsste man 
also erst anders definieren. Aber das behebt ja nicht das eigentliche 
Problem...

von J. T. (chaoskind)


Lesenswert?

Johannes S. schrieb:
> Aber das behebt ja nicht das eigentliche
> Problem...

Mein Reden, mein Reden

von Stefan F. (Gast)


Lesenswert?

Johannes S. schrieb:
> Ich verstehe den Aufriss mit den Takten und CubeMX Codes auch nicht

Ich habe auch nicht damit gerechnet, dass es so schwierig sein wird, ein 
simples Blinky ans laufen zu bringen.

Sinn der Aktion war eigentlich nur, ein möglichst einfaches Programm 
zu haben, das ohne externen Takt auskommt, um zu prüfen, ob der 
externe Oszillator ein Problem hat.

Ich habe inzwischen den Faden verloren. Tritt das Start-Problem mit 
internem Takt auch auf?

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Ich habe inzwischen den Faden verloren. Tritt das Start-Problem mit
> internem Takt auch auf?

Ja tut es. Nochmal kurz das Startproblem geschildert: Ich stecke Power 
in den USB-link stecker, nix tut sich auch nicht nach resetdrücken. 
Flash auslesen. Programm läuft. Reset drücken läuft weiterhin. Strom 
abziehen und wieder anstecken, geht nicht mehr, ich muss wieder den 
flash auslesen damit es losläuft.
Wenn ich aber umjumpere das ich über USB_FS versorge, dann läuft es erst 
auch nicht. Dann stecke ich zusätzlich den USB-link ein, versorge weiter 
über uSB_FS und lese den Flash aus, drücke reset und dann läuft es. Nun 
ziehe ich USB_Link ab, versorgt wird weiter über UBB_FS und es läuft 
weiter. Ich ziehe USB_FS ab, und da nun keine Spannungsversorgung mehr 
da ist, geht es erwartungsgemäß aus. Nun stecke ich USB_FS wieder ein 
und es läuft.
Jumpere ich zurückj auf USB_Link versorgung, geht die ganze Sache wieder 
von vorne los.

Ich bin mir langsam recht sicher, der Fehler dürfte nicht im Takt 
sitzen.

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Sinn der Aktion war eigentlich nur, ein möglichst einfaches Programm
> zu haben, das ohne externen Takt auskommt, um zu prüfen, ob der
> externe Oszillator ein Problem hat.

Sollte aber nicht eigentlich gar nichts laufen, wenn der externe ein 
Problem hat?

von m.n. (Gast)


Lesenswert?

J. T. schrieb:
> Sollte aber nicht eigentlich gar nichts laufen, wenn der externe ein
> Problem hat?

Nein, wenn HSE aussetzt ist HSI aktiv.
Ihr dreht an den völlig falsche Schrauben!

von Stefan F. (Gast)


Lesenswert?

J. T. schrieb:
> Stefanus F. schrieb:
>> Sinn der Aktion war eigentlich nur, ein möglichst einfaches Programm
>> zu haben, das ohne externen Takt auskommt, um zu prüfen, ob der
>> externe Oszillator ein Problem hat.
>
> Sollte aber nicht eigentlich gar nichts laufen, wenn der externe ein
> Problem hat?

Meistens ja. Ich habe aber einmal erlebt, dass ein Quarz Oszillator (am 
AVR) nur dann anlief, wenn ich ein andere Netzteil benutzte. 
Letztendlich lag die Ursache bei falsch bestückten Lastkapazitäten.

Wo sind wir jetzt?

Am externen Takt liegt es nicht.
Am Programm liegt es nicht.
Zeit, die Hardware zu untersuchen.
Ein Druck auf den Reste-Knopf bringt nichts, habe ich das richtig in 
Erinnerung?

Prüfe mal, wie hoch die Versorgungsspannung des µC und die Spannung am 
Reset Pin ist, während das Problem auftritt.

von m.n. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Prüfe mal, wie hoch die Versorgungsspannung des µC und die Spannung am
> Reset Pin ist, während das Problem auftritt.

Vielleicht noch die Kondensatoren tauschen? :-(
Solche Probleme gibt es, wenn das System keinen ordentlichen Reset 
erhält. Ob nun das Programm im RAM liegt, die Position der Vektortabelle 
nicht richtig eingetragen ist oder sich ein BOOT-Modus vordrängelt.
Da muß man suchen und nicht bei Banalitäten!

von Johannes S. (Gast)


Lesenswert?

very strange.
Nochmal von meinem Board das sofort anläuft, egal woher die Spannung 
kommt wenn der Jumper richtig steht:

STLink Version: V2.J29.M18
CPU ist Rev. Z, wird im STLink Util rechts oben angezeigt.
nach dem connect zeigt das STLink Util:
1
13:19:41 : ST-LINK SN : 0675FF544949847067074536
2
13:19:41 : ST-LINK Firmware version : V2J29M18
3
13:19:41 : Connected via SWD.
4
13:19:41 : SWD Frequency = 4,0 MHz.
5
13:19:41 : Connection mode : Normal.
6
13:19:41 : Debug in Low Power mode enabled.
7
13:19:41 : Device ID:0x449 
8
13:19:41 : Device flash Size : 1MBytes
9
13:19:41 : Device family :STM32F74x/F75x

Andere Hardware ist sicher nicht angeschlossen?
Das Boot Option Byte ADD0 steht sicher auf 0x0080 (start adresse 
0x00200000).
Zeigt das STLink nach dem anstecken ab 0x00200000 plausible Werte?

Klemmt vielleicht einfach die Reset Taste? Wenn ich die gedrückt halte 
und USB anschliesse läuft das Programm auch nicht an, allerdings nach 
loslassen und nochmal drücken dann doch.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Wo sind wir jetzt?
>

Nochmal kurz das Startproblem geschildert: Ich stecke Power
in den USB-link stecker, nix tut sich auch nicht nach resetdrücken.
Flash auslesen. Programm läuft. Reset drücken läuft weiterhin. Strom
abziehen und wieder anstecken, geht nicht mehr, ich muss wieder den
flash auslesen damit es losläuft.
Wenn ich aber umjumpere das ich über USB_FS versorge, dann läuft es erst
auch nicht. Dann stecke ich zusätzlich den USB-link ein, versorge weiter
über uSB_FS und lese den Flash aus, drücke reset und dann läuft es. Nun
ziehe ich USB_Link ab, versorgt wird weiter über UBB_FS und es läuft
weiter. Ich ziehe USB_FS ab, und da nun keine Spannungsversorgung mehr
da ist, geht es erwartungsgemäß aus. Nun stecke ich USB_FS wieder ein
und es läuft.
Jumpere ich zurückj auf USB_Link versorgung, geht die ganze Sache wieder
von vorne los.

> Am externen Takt liegt es nicht.
Vermutlich nicht, richtig

> Am Programm liegt es nicht.
Soweit bekomme ich jedes binary zum laufen.

> Zeit, die Hardware zu untersuchen.
> Ein Druck auf den Reste-Knopf bringt nichts, habe ich das richtig in
> Erinnerung?

Das hängt davon ab, in welchem Zustand meines "Kabelsteckzyklus" ich 
bin. Wenn ich den Flash einmal ausgelesen hab, läuft es ja alles ganz 
normal, als wäre nie was gewesen. Auch wenn ich auf USB_FS umjumper 
läuft es dann ja völlig normal. Von daher würde ich den Fehler auch 
irgendwo in der Gegend vom ST-Link suchen. Aber da hab ich halt so 
garkeine Ahnung von..

Stefanus F. schrieb:
> Prüfe mal, wie hoch die Versorgungsspannung des µC
 ca3.2V
> und die Spannung am
> Reset Pin ist, während das Problem auftritt.
0V

m.n. schrieb:
> Vielleicht noch die Kondensatoren tauschen? :-(

Das würd ich nach Möglichkeit gern vermeiden

m.n. schrieb:
> Solche Probleme gibt es, wenn das System keinen ordentlichen Reset
> erhält. Ob nun das Programm im RAM liegt, die Position der Vektortabelle
> nicht richtig eingetragen ist oder sich ein BOOT-Modus vordrängelt.
> Da muß man suchen und nicht bei Banalitäten!

Ich zweifel daran, dass es an der Versorgung liegt, die sieht recht 
stabil aus. Ich vermute wie gesagt irgendwas in der Richtung vom ST-Link

von J. T. (chaoskind)


Lesenswert?

J. T. schrieb:
>> und die Spannung am
>> Reset Pin ist, während das Problem auftritt.
> 0V

P.S.

nachdem Flashauslesen wenns dann läuft, liegen 3,3V über dem 
Resetbutton, die dann bei Tastendruck auch einbrechen.

von Johannes S. (Gast)


Lesenswert?

am Reset Button sind ein einfaches RC mit R39 / C25, da liegt nach USB 
ein sofort 3,3 V an. Dieses Signal ist auch gut am Arduino Connector 
zugänglich. Läuft das Program los wenn der NRST mit Jumper Wire auf 3V3 
gelegt wird?
Vielleicht hat der 3V3 Regler auch ein Problem?
Die Stromaufnahme ist bei mir 300 mA @ 5V (über die ext. Versorgung 
angeschlossen) und wenn mein blinky läuft.

von J. T. (chaoskind)


Lesenswert?

Johannes S. schrieb:
> Dieses Signal ist auch gut am Arduino Connector
> zugänglich. Läuft das Program los wenn der NRST mit Jumper Wire auf 3V3
> gelegt wird?

Am Arduino Connector liegen die 3.3V auch an, auch schon wenn das 
Programm noch nicht läuft, am Resetbutton dann aber noch nicht. Aber 
wenn ich die dann mit nrst lege, läuft es auch nicht los.

von J. T. (chaoskind)


Lesenswert?

Johannes? kannst du mal testen, was die BiColor LED am USB-Link bei dir 
macht, wenn du über USB-FS versorgst? Bei mir blinkt sie rot, ca 1sek an 
1sek aus.

von Johannes S. (Gast)


Lesenswert?

J. T. schrieb:
> Bei mir blinkt sie rot, ca 1sek an
> 1sek aus.

hier genauso.

J. T. schrieb:
> auch schon wenn das
> Programm noch nicht läuft, am Resetbutton dann aber noch nicht.

das ist merkwürdig, lt. Schaltplan ist das doch das gleiche Signal, NRST 
wird durch den Taster erzeugt.

von J. T. (chaoskind)


Angehängte Dateien:

Lesenswert?

Johannes S. schrieb:
> Andere Hardware ist sicher nicht angeschlossen?
Ab und an das Oszi zum messen, und am Rechner steckt ne Maus... Sonst 
nix.

> Das Boot Option Byte ADD0 steht sicher auf 0x0080 (start adresse
> 0x00200000).
> Zeigt das STLink nach dem anstecken ab 0x00200000 plausible Werte?
>
siehe Anhänge

> Klemmt vielleicht einfach die Reset Taste? Wenn ich die gedrückt halte
> und USB anschliesse läuft das Programm auch nicht an, allerdings nach
> loslassen und nochmal drücken dann doch.

Ziemlich sicher nicht, dagegen spricht dass es absolut wiederholbar ist. 
Das wäre doch sehr verwunderlich, wenn die klemmende Taste sich merken 
würde wann welche Spannung angelegt wurde.

von J. T. (chaoskind)


Lesenswert?

J. T. schrieb:
> Am Arduino Connector liegen die 3.3V auch an, auch schon wenn das
> Programm noch nicht läuft, am Resetbutton dann aber noch nicht. Aber
> wenn ich die dann mit nrst lege, läuft es auch nicht los.

Hier hab ich mich missverständlich ausgedrückt. Am Arduino Connector 
liegen die 3.3V nur am 3.3V Port. Am NRST liegen 0V wenn es noch nicht 
läuft. NRST ist immer gleich mit dem direkt am Resetbutton gemessenen 
Wert.
Wenns denn erst mal läuft gehen NRST und am Resetbutton gemssen 
gleichzeotig auf 0 beim messen.

von Johannes S. (Gast)


Lesenswert?

aber meine STLink Version ist deutlich neuer V2J29 zu V2J21. STLink ist 
V4.2, das müsste ziemlich aktuell sein. Lade das mal von ST und mache 
dann nochmal das STLink Firmwareupdate.

Und das am Taster noch 0V anliegen ist merkwürdig. Wenn das Programm 
nicht läuft, per Draht NRST mal auf GND und dann auf 3V3 legen?

von J. T. (chaoskind)


Lesenswert?

Johannes S. schrieb:
> Und das am Taster noch 0V anliegen ist merkwürdig. Wenn das Programm
> nicht läuft, per Draht NRST mal auf GND und dann auf 3V3 legen?

Wurde auch schon vorgeschlagen, brachte aber nichts.

von Johannes S. (Gast)


Lesenswert?

NRST muss im Betrieb auf 3V3 liegen. Nur beim Einschalten wird es durch 
C25 (über dem Taster) kurz auf GND gezogen und dann über R39 auf 3V3. 
Sehr billig bei so einem HiTech Board, aber vielleicht hat der µC eine 
Reetschaltung eingebaut, habe ich nicht nachgesehen.

von J. T. (chaoskind)


Lesenswert?

Johannes S. schrieb:
> aber meine STLink Version ist deutlich neuer V2J29 zu V2J21. STLink ist
> V4.2, das müsste ziemlich aktuell sein. Lade das mal von ST und mache
> dann nochmal das STLink Firmwareupdate.

Bin jetzt auf V2j32 und es blinkt wieder direkt beim Anstecken los!!!!!

Ich verstehe nur nicht, wo das Problem überhaupt herkam. Es ging ja mal, 
dann ging es ohne Änderung von einen Tag auf den anderen nicht mehr....


Juuuchuuu ich kann auch wieder über die PowerBank versorgen.Also über 
alle Stecker!

Vielen herzlichen Dank an alle mithelfenden, das war irgendwie ne 
schwere Geburt, für eineam Ende so einfach Lösung :D

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

Gückwunsch, ein selten blödes Problem...
Aber so lernt man die Interna seiner Hardware kennen :)

von Stefan F. (Gast)


Lesenswert?

m.n. schrieb:
> Stefanus F. schrieb:
>> Prüfe mal, wie hoch die Versorgungsspannung des µC und die Spannung am
>> Reset Pin ist, während das Problem auftritt.
>
> Vielleicht noch die Kondensatoren tauschen? :-(
> Solche Probleme gibt es, wenn das System keinen ordentlichen Reset
> erhält.

Ich nehme allerdings an, dass ein Druck auf den Reset Knopf als 
"ordentlicher Reset" durch geht. Und der funktioniert jedenfalls auch 
nicht.

Deswegen komme ich auf so krude Sachen.

von Stefan F. (Gast)


Lesenswert?

Johannes S. schrieb:
> NRST muss im Betrieb auf 3V3 liegen.

Richtig. Die gemessenen 0V sind ein wichtiger Hinweis. Die Fehlerursache 
hängt demnach mit Sicherheit direkt am NRST Pin (wurde inzwischen auch 
bestätigt).

> Sehr billig bei so einem HiTech Board, aber vielleicht hat der µC eine
> Reetschaltung eingebaut, habe ich nicht nachgesehen.

Hat er. Der NRST Pin ist sowohl Eingang als auch Ausgang. Der 
Mikrocontroller erzeugt intern aber nur einen kurzen Low-Impuls. Er hält 
die Leitung nicht auf Low (es sei denn, er ist defekt).

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Ich nehme allerdings an, dass ein Druck auf den Reset Knopf als
> "ordentlicher Reset" durch geht. Und der funktioniert jedenfalls auch
> nicht.

Aber halt nur, wenn auf der einen Seite vom Knopf auch 3.3V anliegen, 
die dann auf Gnd gezogen werden können. Und aus mir völlig rätselhaften 
Gründen, wurden die halt erst nach dem Flash lesen angelegt. Aber auch 
nur bei Versorgung über den USB_STlink. Und nach nem Update vom ST-Link 
läuft nun wieder alles wie es sich gehört.

von Stefan F. (Gast)


Lesenswert?

Offensichtlich hat die fehlerhafte Firmware des ST-Link den NRST Pin 
herunter gezogen und dort festgehalten.

von J. T. (chaoskind)


Lesenswert?

Stefanus F. schrieb:
> Offensichtlich hat die fehlerhafte Firmware des ST-Link den NRST Pin
> herunter gezogen und dort festgehalten.

Ja das ist offensichtlich und somit eigentlich nicht erwähnenswert. Was 
aber nicht offensichtlich ist, und meinen gequälten Verstand weiter 
malträtiert, ist die Frage nach dem warum. Die ursprüngliche 
Konfiguration lief ja mal. Und dann trat das Problem ohne jegliche 
Änderung auf. Abends das funktionierende Board ausgemacht und am 
nächsten Tag wieder angesteckt. Startet nicht. Ich dachte mir "nanu 
Flash verloren?!?! Hmm ma auslesen, oh nu läufts ja". Und so nahm das 
Drama dann seinen Lauf

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.