Stm 32f4-discovery Ports aktivieren

Gast #2478038
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
Gast #2478072
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.
Gast #2478078
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;
Gast #2478117
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.
Gast #2478149
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 ?
#2478696
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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren