Guten Tag, ich hab mir jetzt ein stmf4 discovery board gekauft. Ich dachte das es vom programmieren genau gleich bleiben würde, wie bei dem Stm32-discovery.Da ich langsam am verzweifeln bin ein einfaches Testprogramm zuschreiben.Das Programm soll nur PD4 auf VCC ziehen. mfg. Moritz Hännes
Im Grunde musst Du nur die äquivalenten Schritte gehen wie beim STM32F1 (ich nehme an Du meinst den). Systemtakt und Peripherietakt setzen Datenrichtungsregister bzw. Portfunktion setzen. Bit ausgeben. Wo genau hakt es? Stelle uns bitte eine konkrete Frage.
Also beim f1 ging es so: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIOC->BRR = GPIO_Pin_3;
Hm. Leider wieder keine konkrete Frage. Ich fürchte das Hauptproblem ist kein technisches sondern ein psychologisches. Am besten erstmal Abstand gewinnen und ein paar Stunden was ganz Anderes machen. Dann nochmal Schritt für Schritt prüfen. Richtige Library? (Nicht die für den F1 sondern für den F4). Prozessor richtig gesetzt in den Compileroptinen und den Configurationsfiles? Schaltplan und Reference Manual mit der tatsächlichen Wirkung vergleichen. Sind die Register wirklich so gesetzt wie es nötig ist? (Simulator). Gegebenenfalls hier kompletten kompilierbaren Code oder sogar das Projekt als ZIP posten. Vorher ein Clean machen. Abgesehen davon hat etwa der IAR (hier fehlt uns Information darüber welchen Compiler Du verwendest) einige Macken. Clean und rebuild kann helfen.
Es geht ja schon so los , das ich keinen Anfang finde ich sitz seit gestern 22 Uhr dran und bin am verzweifeln hab alle beispiel codes von ST angesehn.So weit bin ich schon : #include "stm32f4xx.h" int main(void){ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); } Und weiter weiß ich nicht ! Meine Programme schreibe ich mit Atollic true studio. Kann mir wer einen Beispiel Code zeigen ?
Schau dir mal an was die Werte bedeuten. z.B.: GPIO_Mode_AN Geh am Besten so vor: http://www.mikrocontroller.net/articles/STM32F10x_Standard_Peripherals_Library#Etwas_auf_den_Port_ausgeben
Kann mir bitte wer einen Beispiel Code senden? Oder mir wer gute Tutoriels empfehlen. mfg. Moritz Hännes
Schalt erstmal eine LED ein- und aus, dann klappt es analog auch mit den anderen Ports. So etwa:
1 | ....
|
2 | |
3 | #define LD_3_AUS GPIO_ResetBits(GPIOD,GPIO_Pin_13) /* orange LED */ |
4 | #define LD_3_EIN GPIO_SetBits(GPIOD,GPIO_Pin_13)
|
5 | |
6 | int main (void) { |
7 | GPIO_InitTypeDef GPIO_InitStructure; |
8 | |
9 | // GPIOD Takt freigeben
|
10 | RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); |
11 | |
12 | // LED-GPIO als Ausgang konfigurieren
|
13 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; |
14 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; |
15 | GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; |
16 | GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; |
17 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; // oder kleiner |
18 | GPIO_Init(GPIOD, &GPIO_InitStructure); |
19 | |
20 | // LD_3_AUS;
|
21 | LD_3_EIN; |
22 | while(1); |
23 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.