Forum: Compiler & IDEs Stm 32f4-discovery Ports aktivieren


von Moritz Hännes (Gast)


Lesenswert?

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

von Moritz Hännes (Gast)


Lesenswert?

Ich meine natürlich stm23f4-discovery board

von Noname (Gast)


Lesenswert?

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.

von Moritz Hännes (Gast)


Lesenswert?

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;

von Noname (Gast)


Lesenswert?

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.

von Moritz Hännes (Gast)


Lesenswert?

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 ?

von Moritz Hännes (Gast)


Lesenswert?

Ich will nur das auf pd 13 VCC liegt.

von hp-freund (Gast)


Lesenswert?

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

von Moritz Hännes (Gast)


Lesenswert?

Kann mir bitte wer einen Beispiel Code senden?
Oder mir wer gute Tutoriels empfehlen.

mfg. Moritz Hännes

von Matthias K. (matthiask)


Lesenswert?

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
}

von Moritz Hännes (Gast)


Lesenswert?

Vielen , vielen Dank für die gute Hilfe jetzt klappts

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.