Hallo,
versuche mit eine Verzögerungsfunktion für den stm32f10x zu bauen die
den systick benutzen soll um eine Zeitbasis zu schaffen, allerdings
scheitert das ganze daran das Keil IDE meint die funktion
SysTick_Config() nicht zu kennen. Im wiki steht "Der Sys-Tick Counter
ist ebenfalls in der CMSIS enthalten da er Bestandteil des Cortex-M3
ist." die frage ist nur welche Header Datei es ist, binde ich die
falsche ein bekomme ich meldungen das Funktionen doppelt deklariert
sind. Im mom. habe ich folgende Header-Datei eingebunden.
Ich hab die Sache mal nur überflogen und arbeite auch nicht mit Keil.
Aber man muss für die Systick funktion den header misc.h einbinden.
Versuchs mal
mfg Jan
Patrick Langosch schrieb:> Ja, hab ich eingefügt, hab aber das Problem das der Keil die Funktion> SysTick_Config nicht kennt, meckert immer:
Schau Dir mal den Namen der Header Datei an.
stm32f10x.h: CMSIS
stm32f10x_lib.h: FWLib
Du musst also möglicherweise beide einbinden, um CMSIS und FWLib zu
bekommen.
Gruß
Marcus
#include "stm32f10x.h" sollte auch bei Keil reichen. stm32f10x_lib oder
..._conf.h braucht man normalerweise nicht noch extra einzubinden.
Allerdings muss USE_STDPERIPH_DRIVER definiert sein. Am besten in den
Target-Options -> C/C++ -> Define. Wenn Du das Template nimmst, passt
das alles schon automatisch.
Hast Du Dir mal das Template in der FW-Lib für MDK-ARM angesehen?
Also wenn ich nur die #include <stm32f10x.h> einbinde dann werden es
noch mehr Fehlermeldungen, ala:
error: #20: identifier "ADC_Channel_0" is undefined
und so weiter, das war auch der Grund warum ich immer die
stm32f10x_lib.h eingebunden hatte.
Ein #define USE_STDPERIPH_DRIVER habe ich auch versucht, hat aber nix
gebracht. Wo finde ich das von dir beschriebene Template, in der
Hilfe-Datei der Peripherials?
Patrick Langosch schrieb:> Wo finde ich das von dir beschriebene Template, in der> Hilfe-Datei der Peripherials?
STM32F10x_StdPeriph_Lib_V3.4.0 -> Project ->
STM32F10x_StdPeriph_Template ->
MDK-ARM
Joar gefunden habe ich es jetzt aber so richtig weitergeholfen hat mit
das nicht. Es muss doch möglich sein das man z.B. wie beim AVR-Studio
(avr-gcc), schön die Header-Dateien der Peripherie auswählt die man
benötigt. Aber der Keil meckert ja nur das alles doppelt deklariert
wäre.
Patrick Langosch schrieb:> Es muss doch möglich sein das man z.B. wie beim AVR-Studio> (avr-gcc), schön die Header-Dateien der Peripherie auswählt die man> benötigt. Aber der Keil meckert ja nur das alles doppelt deklariert
Da machst Du irgendwo grundsätzlich was falsch. Die Demos funktionieren
jedenfalls. Die gesamte FW-Lib wird nur über einen Header eingebunden.
Deine speziellen Projektheader kannst Du, wie im AVR-Studio gewohnt,
dann dort auch einbinden.
Häng doch mal das ganze Projekt an, dann müssen wir nich so rumrätseln!
Habe es Dir angepasst. Läuft jetzt zumindest ohne Erros durch.
Systick Aufruf ist in die stm32f10x_it.c verlegt, dort gehören alle
Interruphandler rein. Auf die Keil-interne FW-Lib würde ich mich nicht
verlassen, war außerdem alte Version. Projekt hat jetzt die FW-Lib 3.4.0
integriert. Ordnerstrukturen so lassen.
µC ist STM32F103RE, ein HD-Device. Dafür ist auch der Startupcode drin.
Falls das nicht stimmt, musst Du das noch ändern.
Danke, ja die Fehlermeldungen sind jetzt weg, ganz schön kompliziert so
ein umstieg von Atmel 8-Bit auf ST 32-Bit, soweit scheint es zu
funktionieren, einzig die Kompilation dauert nun länger als vorher.
Patrick Langosch schrieb:> m moment benutze ich den Keil eigenen Simulator, will mir aber vllt.> bei zeiten einen JTAG Debugger zulegen, kannst du da einen empfehlen?
Wenn Du nur STM32 benutzen willst, ist der ST-Link eine gute Wahl.
Billig und zuverlässig, ca. 25 Euro. Dann könntest Du auch das Atollic
True Studio Lite (kostenlos) nutzen, auf Eclipse + GCC Basis. Hat keine
Einschränkungen in Code- und Debuggröße.
Sonst div. andere, zB. J-Link von Segger