Home
Lass es blinken!
- Details
- Kategorie: Einrichtung der Toolchain
- Veröffentlicht am Donnerstag, 02. Februar 2012 22:01
- Geschrieben von chrimbo
- Zugriffe: 68
So, weiter gehts.
Erstmal eine kleine Korrektur. Das "#define STM8S105" muss da wieder raus. Stattdessen gibt es zwei möglichkeiten:
- "#define STM8S105" in stm8s.h oder
- Projekteinstellungen -> C-Compiler -> Dropdown Menü: General -> Preprocessor Definitions und dann "STM8S105" eintragen
Dieses define wird von mehreren Dateien verwendet, deswegen reicht es nicht, es nur in main.c zu definieren... Naja man kann sich ja mal irren.
Wo wir gerade dabei sind, in der stm8s_conf.h noch die Zeile
#define USE_FULL_ASSERT (1)auskommentieren. So wie ich das verstanden habe ist das für irgendwelche Debugzwecke... Ich hab das einfach mal nach dem Trial and Error Prinzip auskommentiert, als mir der Compiler eine Fehlermeldung um die Ohren gehauen hat.
So jetzt soll das Programm aber endlich mal was machen! Wir gehen wieder in main.c und ändern die Funktion "main" etwas ab. Die "User Led" am Discovery Board ist mit Pin PD0 verbunden undzwar active-low, d.h. wir müssen eine logische Null (Low) an den Pin schreiben, damit die Led leuchtet. Aber zuerst müssen wird dem Pin sagen, dass er ein aktiver Push-Pull-Ausgang ist. Dafür wird die Libraryfunktion "void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode);" verwendet. Der Aufruf für uns ist in dem Fall:
/* * GPIO_Init * GPIOD - Port D * GPIO_Pin_0 - Pin 0 * GPIO_MODE_OUT_PP_LOW_FAST - Modus * | | | |____- Schnell (10MHz) * | | |_________- Grundkonfiguration Low (Pin ist danach Low) * | |____________- Push-Pull Treiber-Stufe * |________________- Ausgang */ GPIO_Init(GPIOD, GPIO_Pin_0, GPIO_Mode_OUT_PP_LOW_FAST);
Innerhalb der Endlosschleife (while(1)) können wir jetzt den Pin toggeln. Dafür bietet uns die Lib die Funktion "void GPIO_WriteReverse(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);" an. Analog unser Aufruf:
GPIO_WriteReverse(GPIOD, GPIO_Pin_0);
Nun mit "F7" kompilieren und feststellen, dass da noch ein Fehler ist. Der Compiler sagt uns, er könne "GPIO_Init" und "GPIO_WriteReverse" nicht finden. Klar die Source-Datei ist auch noch nicht in unser Projekt eingebunden, also Rechtsklick auf Source Files -> Add Files to Folder. Im Ordner "src" die Datei "stm8s_gpio.c" auswählen und den Dialog beenden. -> "F7" und es sollte mit "blinky.elf - 0 error(s), 0 warning(s)" beenden.
Gut. Und im nächsten Beitrag werden wir versuchen, das Projekt laufen zu lassen. Bis dann.


Kommentare (0)