Hallo zusammen,
ich setze mich seit einer geraumer Zeit mit dem STM32F103VC
auseinander, und muss für die Uni ein größeres Projekt fertig machen.
Nach vielem einlesen, meine ich die Standart Peripherie Library
und natürlich die Funktionen des STM32 verstanden zu haben.
Nunja, jetzt versuche ich meine ersten Laufschritte in Keil
zu bewerkstelligen, und habe schon da Probleme mit dem Einfügen
der Library und dem kompilieren.
Sehe ich es richtig das ich unter "Target Option" - "C/C++" - "Include
Path" die Pfade für meine gewünschte Library eingebem muss?
Nach dem Compilieren kam folgende Fehlermeldung:
Was genau bedeutet das?
Mal eine andere Frage,
hat denn nicht jemand ein fertiges Blanko Projekt,
wo man einfach loslegen kann?
...glaube nicht das es so schwierig sein kann... ;)
also, ich habe die test.zip runtergeladen und das kompilieren geht
super...
flashen geht anscheinend auch,
nur wenn ich mit meinem oszi an die ports gehe,
sehe ich nichts
(Led pins müssten ja hich sein, zumindest abwechselnd)
ich habe folgendes geändert in options for target ... :
- device auf stm32f103vc geändert
- c/c++ preprocessor symbols auf USE_STDPERIPH_DRIVER,STM32F10X_HD
- debug auf use: cortex m... (nutze einen j-link von segger)
- utilities auch wieder auf cortex m...
---> settings -> stm32f10x high denisity flash 512 kb (eigentlich hat
dieser ~380kb)
was kann ich noch verbrochen haben?
oder was muss ich noch umstellen?
Habe den Code so geändert, das theoretisch alle Pins
high sein müssten, richtig?
Aber die Pins haben keine Spannung... -_-
Was mich nur wundert... Keil spuckt mir keine Fehlermeldung raus...
egal ob flashen oder debuggen... also scheint er kommunizieren
zu können. wo könnten denn jetzt die Fehler sein?
Oh man ... immer diese riesen unübersichtlichen Libraries für kleine
Projekte ...
Was für ein Developmentboard hast du?
Schau mal unter:
c:\keil\ARM\Boards\Keil\MCBSTM32
c:\keil\ARM\Boards\Keil\MCBSTM32C
c:\keil\ARM\Boards\Keil\MCBSTM32E
da findest du viele lesbare Beispiele.
Auch empfehle ich dir sehr, dir die CMSIS Sachen anzusehen, die werden
in den Beispielen übrigens benutzt.
VG,
/th.
Florian schrieb:> RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // GPIO A Takt freigeben> RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // GPIO B Takt freigeben
Für die andern Ports musst Du dann auch den Takt freigeben!
oh ja, hast recht Matthias,
da hab ich dank Frust, schlicht weg gepennt.
Random, da wird noch einiges dazu kommen,
nur stimmt irgendwas am Grundgerüst nicht.
so habs probiert, alle Pins auf low... -_-
irgendetwas stimmt mit den Einstellungen nicht...
oder was stellt ihr so ein, wenn ihr einen neuen Debugger habt,
und einen neuen STM32?
Vielleicht finde ich so meinen Fehler
Florian schrieb:> Random, da wird noch einiges dazu kommen,> nur stimmt irgendwas am Grundgerüst nicht.
Den Low Level Kram progg ich immer selbst nach Manual. Genau abgestimmt
auf das, was ich brauche. Und schnell. Nur Ethernet, USB etc. schnapp
ich mir Libs.
> oder was stellt ihr so ein,
Ich lasse meist nen Pin toggeln, mit ner for(..) __NOP(); - loop. Dann
weiss ich auch gleich, ob meine Clocks stimmen.
Öhm Random, glaub ich habe mich falsch ausgedrückt,
mir gehts garnicht darum ob irgendwas high, low oder toggelt...
ich hab das problem dass der mC nichtmals ansatzweise das macht was ich
möchte.
mir gings nur darum zu schauen,
wenn ich meinen stm32f103vc flashe,
er auch das simpelste programm dann übernimmt!
ich habe alle ausgänge auf pp output gesetzt,
damit ich nachschauen kann, ob mein oszi auch
überall ~3V anzeigen tut...
was aber nicht der fall ist...
ich suche einen configurationsfehler,
kein programmfehler...
das absurde ist ja, das keil behauptet er würde was geflasht haben...
verstehste was gerade mein problem ist?
Beiliegend ein Blinky-Template.
Meine Datenstruktur ist wie folgt:
E:\Data\Cpu\Arm\Keil\
E:\Data\Cpu\Arm\St\Vers_3.5\
-> CMSIS
-> StdPeriph
Viel Glück!
Danke Mehmet,
ich schaus mir gleich an :)
Also ich habe mein Problem gefunden,
bzw. ein Kollege hat mich drauf hingewiesen.
Ich hatte ein Schaltungsfehler auf meinem Board!
Und zwar hatte ich Boot0 permanent auf 3,3V,
dies hat zu dem Fehler geführt!
Dennoch Danke an alle!
Freut mich, dass sich Dein Problem in Luft aufgelöst hat.
Falls es Dich tröstet: ich habe einen ganzen Tag verloren, weil ich PB.4
als Output vorgesehen, aber ganz vergass hatte, dass das der NJTRST
Anschluss war und deshalb remapped werden musste.
Shit happens!
Das PB4 bit hat auch mich für Radsel gestellt : obwohl es met den Remap
klaptte, hat das jedenmal bei Reset hoch gestanden. Nicht so gunstig wen
es verwendet werd für eine Motorsteuerung...
So : PB4 nie verwende für ein "muss" low Ausgang !!
Ansonst finde ich das ein Superteil !! Ich spiel mit das STM32v
Discovery board, es ist Wahnsinnig was das Ding alles kan¨/ €cent !!
An meinem Board habe ich es vermieden...
ich mein, ich habe zich GPIOs,
da kann ich auf paar (für Jtag) verzichten,
ansonsten kommt die größere Variante...
was mich eher ärgert ist die Tatsache,
das mein Schaltplan richtig war,
aber beim Platinenlayout es vermurkst wurde...
oder wer kontrolliert schon gerne 100 beinchen auf Richtigkeit,
wenns schon vorher (Schaltplan) korrekt war
So viel Spaß noch beim Fußball schauen ;)
Um nicht einen neuen Threat aufmachen zu müssen,
hänge ich mal eine weitere Frage hier dran.
Und zwar hab ich das Problem beim kompilieren:
1
C:\Keil\ARM\INC\ST\STM32F10x\stm32f10x.h(80): error: #35: #error directive: "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
Um jetzt nicht ein neuen Thread über die selbe ursprüngliche Frage
aufmachen zu müssen:
Ich benutze auch Keil uvision 5 mit dem stm32f429-zit Discovery Board
und habe beim kompilieren das selbe problem:
Josh K. schrieb:> was soll ich tun?
Gegenfrage: Was bist du bereit zu tun?
Die gezeigten Fehlermeldungen sind eindeutig Linker-Beschwerden über
fehlende Dinge im Startupcode.
Normalerweise sollten irgendwo (s.u.) solche Einträge stehen:
--cpu=Cortex-M4.fp
--output linked.axf
--ro-base 0x00000000
--rw-base 0x..na wo dein RAM losgeht
--first startupcode.o
--entry=Kaltstart oder eben dein Reset-Handler
startup.o
*.o
*.o eben alle deine objektcodes
main.o
Wer wie ich einen eigenen Startupcode in Assembler benutzt, hat damit
garkeine Probleme, aber es ist ja bei STM32 Liebhabern derzeit Mode,
einen Startup in C zu schreiben - und da liegt bei dir vermutlich der
Haken. Vielleicht fehlt irgend ein verdammtes Pragma oder du hast den
Kaltstart anders benannt als es in den diversen Projektfiles dieser IDE
gerade Mode ist.
Mein Rat ist, das Ganze mal OHNE irgendeine IDE durchzuziehen und zwar
nur per Batchdatei, aber mit sinnvollen .xcl (Kommandozeilen extension).
Grund: Damit du es lernst, die eigentlichen Tools ohne irgendwelches
Zeugs dazwischen aufzurufen. Einen positiven Nebeneffekt hat es auch:
nämlich daß man die Sache direkter im Griff hat.
Ne passable compile.xcl wäre dies:
--strict
--cpu=Cortex-M4.fp
--c99
--thumb
-c
Und der Aufruf dazu:
echo Compile Main
armcc --via compile.xcl main.c
if Errorlevel==1 goto ende
Aber dazu müßtest du bereit sein, sowas zu tun und nicht wie alle
Anderen partout auf der IDE bleiben zu wollen.
W.S.