Forum: Mikrocontroller und Digitale Elektronik STM32F0 Discovery Port C Pin 1 and Pin 2 problem


von Peter (Gast)


Lesenswert?

Hallo !

Also ich bin etwas frustriert mit diesem Problem.
Mein STM32F0 Discovery Board hat ein Problem ..
Port C Pin 1 und Pin 2 gehen nicht auf high level an diesem Board.
Meine 0 Erfahrung mit Arms hilft hier auch nicht um das zu loesen.
Die pins 1+2 des Ports bleiben auf low. Was kann ich noch machen.
Ich hoffe der Code ist ok, alle anderen pins des PortC arbeiten wie
man das so vermutet.
Hat jemand eine Ideee ? Ich bin recht neu in der arm Sache und brauche
etwas Hilfe hier.
Mein Code is weiter unten ..
Danke fuer Eure Hilfe.

1
#include "stm32f0xx.h"
2
#include "stm32f0xx_rcc.h"
3
#include <stm32f0xx_conf.h>
4
#include "stm32f0xx_gpio.h"
5
#include "diag/Trace.h"
6
7
int main()
8
{
9
10
  GPIO_InitTypeDef GPIO_InitDef;
11
        RCC->AHBENR |= RCC_AHBENR_GPIOCEN;
12
        GPIO_InitDef.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5\
13
        | GPIO_Pin_6 | GPIO_Pin_7| GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 \
14
      | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15 ;
15
    GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT;
16
    GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
17
    GPIO_InitDef.GPIO_PuPd = 0x01;
18
    GPIO_InitDef.GPIO_Speed = GPIO_Speed_2MHz;
19
    //Initialize pins
20
    GPIO_Init(GPIOC, &GPIO_InitDef);
21
22
23
        GPIOC->ODR =0xFFFF;
24
25
}

von Eric B. (beric)


Lesenswert?

Im main() befindet sich üblicherweise eine Endlosschleife, da es ja kein 
Sinn mach das Programm zu beenden. Bei dir endet main nach dem letzten 
Befehl ( "GPIOC->ODR =0xFFFF;" ) und dann wird sich der uC 
wahrscheinlich resetten und von vorne anfangen. Das heisst, dass dein 
Port C nie in einem definierten Zustand kommen wird.
Mach mal ein
1
while(1) { /* tue nix mehr */ }
rein, nach dem GPIOC->ODR=0xFFFF; ...

von Peter (Gast)


Lesenswert?

Vielen Dank Erik.

Ich habe das in die while loop kopiert, aber das das hat auch nichts
geaendert. Ich glaube das ist eine alternative funktion an den pins.
In dem datenblatt von dem board sagt es das external int 1 und 2
an den beiden pins sind. Ob dies das problem verursacht kann ich nicht 
sagen.
Der Port sollte ja mit dem output alles ueberschreiben, denke ich.

Cheers
Peter

von Eric B. (beric)


Lesenswert?

Peter schrieb:
> Ich glaube das ist eine alternative funktion an den pins.

Glauben hilft dir nix :-)

> In dem datenblatt von dem board sagt es das external int 1 und 2
> an den beiden pins sind.

Sicher? Ich finde da nix im Schaltplan [1] ...



[1] 
http://www.st.com/st-web-ui/static/active/en/resource/technical/layouts_and_diagrams/schematic_pack/stm32f0discovery_sch.zip)

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Hmm..

Im anhang ein screen shot von dem board manual.
Das sagt es unter PC1 und PC2 das da der INT1 und INT2 wohnt.
Kann es sein das dies das problem verursacht ?

Na ja es gibt ja auch noch die Moeglichkeit das der Chip defect ist, 
aber
das denke ich nicht.

von Eric B. (beric)


Lesenswert?

Das scheint dann ein anderes Board zu sein als das was ich oben 
angepeilt hatte. Deine Tabelle zeigt, dass die Pins -nicht- für "Free 
I/O" verfügbar sind. Wahrscheinlich sind INT1 und INT2 Outputs von 
diesem L3GD20-Teil --> Datenblatt aufsuchen und nachlesen!

von Peter (Gast)


Lesenswert?

Halloa Eric,

Ja das sieht so aus als ob diese teil da verbunden ist.
Das scheint wohl das problem zu sein. Zwar sieht es bei diesem
board auf den ersten Blick so aus als ob da haufenweise i/o
zur verfuegung steht, aber dem ist nicht so. Die meisten i/os sind 
verbaut mit irgendwelchen teilen die zur demo da drauf sind. Manche 
lassen sich wohl
durch loetbruecken entfernen, aber man kann halt nicht alle ausschalten.

Nun, das erledigt diesen fall. Vielen dank fuer die Hilfe.

Besten gruss
Peter

von Unwissender (Gast)


Lesenswert?

Da fehlt etwas wie ein SystemInit() Aufruf oder ähnliches, was die Clock 
und PLL Einstellungen setzt.

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.