Forum: Mikrocontroller und Digitale Elektronik STM32F030F4 Quarz Pins


von Jan H. (janiiix3)


Lesenswert?

Halli Hallo,

habe folgendes Problem, wo ich aktuell vor einer verschlossenen Tür 
stehe.
Es geht um die Pins PF0 / 1.

Dort habe ich jeweils eine LED dran (alles richtig verdrahtet, leuchten 
tut sie auch!).

Nun steht im Datenblatt das nach einem Reset diese Pins als ganz normale 
GPIO´s verwendet werden können.
Andere Funktionen bzw. andere Pins funktionieren ja. Nur eben diese 
beiden nicht.
Muss ich doch noch was anderes Konfigurieren?

Vielen dank im voraus.

von 32F030 (Gast)


Lesenswert?

Hallo,

die GPIOs müssen trotzdem konfiguriert werden, siehe Abschnitt 8 des 
ref-manuals. Hast Du das gemacht? Zeig mal bitte Dein vollständiges 
Programm.

von Jan H. (janiiix3)


Lesenswert?

Hallo,

ich hoffe doch das ich das gemacht habe und nichts vergessen habe...
1
int main(void)
2
{
3
    SystemInit();
4
5
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
6
    SysTick_Config(SystemCoreClock / 100000);
7
8
    Outputs_Init();
9
10
    lcd_init(LCD_DISP_ON_CURSOR_BLINK);
11
12
    lcd_clrscr();
13
    lcd_gotoxy(0,0);
14
    lcd_puts("     STM32x     ");
15
16
    RELAIS_K1_SET;
17
18
  while(1)
19
  {
20
        RELAIS_K1_SET;
21
        _delay(10e3);
22
        RELAIS_K2_SET;
23
        _delay(10e3);
24
        RELAIS_K3_SET;
25
        _delay(10e3);
26
        LED_WHITE_SET;
27
        _delay(10e3);
28
29
        RELAIS_K1_UNSET;
30
        _delay(10e3);
31
        RELAIS_K2_UNSET;
32
        _delay(10e3);
33
        RELAIS_K3_UNSET;
34
        _delay(10e3);
35
        LED_WHITE_UNSET;
36
        _delay(10e3);
37
  }
38
}
39
40
void Outputs_Init(void)
41
{
42
    GPIO_InitTypeDef GPIOx;
43
44
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
45
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE);
46
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOF,ENABLE);
47
48
    GPIOx.GPIO_Mode     = GPIO_Mode_OUT;
49
    GPIOx.GPIO_OType    = GPIO_OType_PP;
50
    GPIOx.GPIO_Pin      = (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 |    GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);
51
    GPIOx.GPIO_PuPd     = GPIO_PuPd_NOPULL;
52
    GPIOx.GPIO_Speed    = GPIO_Speed_2MHz;
53
    GPIO_Init(GPIOA, &GPIOx);
54
55
    GPIOx.GPIO_Mode     = GPIO_Mode_IN;
56
    GPIOx.GPIO_Pin      = (GPIO_Pin_13 | GPIO_Pin_14);
57
    GPIOx.GPIO_PuPd     = GPIO_PuPd_UP;
58
    GPIOx.GPIO_Speed    = GPIO_Speed_2MHz;
59
    GPIO_Init(GPIOA, &GPIOx);
60
61
    GPIOx.GPIO_Mode     = GPIO_Mode_OUT;
62
    GPIOx.GPIO_OType    = GPIO_OType_PP;
63
    GPIOx.GPIO_Pin      = GPIO_Pin_1;
64
    GPIOx.GPIO_PuPd     = GPIO_PuPd_NOPULL;
65
    GPIOx.GPIO_Speed    = GPIO_Speed_2MHz;
66
    GPIO_Init(GPIOB, &GPIOx);
67
68
    GPIOx.GPIO_Mode     = GPIO_Mode_OUT;
69
    GPIOx.GPIO_OType    = GPIO_OType_PP;
70
    GPIOx.GPIO_Pin      = (GPIO_Pin_0 | GPIO_Pin_1);
71
    GPIOx.GPIO_PuPd     = GPIO_PuPd_NOPULL;
72
    GPIOx.GPIO_Speed    = GPIO_Speed_2MHz;
73
    GPIO_Init(GPIOF, &GPIOx);
74
75
}

von 32F030 (Gast)


Lesenswert?

Ok, was für LEDs hast Du benutzt, wie groß sind die Vorwiderstände, wie 
sind die LEDs angeschlossen?

von Jan H. (janiiix3)


Lesenswert?

Alle anderen Ausgänge funktionieren doch!
Die haben alle die gleiche Beschaltung.
Wieso sollte es dort aufeinmal anders sein?

Können diese Pins etwa keine 20mA treiben?

von 32F030 (Gast)


Lesenswert?

Das Programm ist nicht vollständig:

        LED_WHITE_SET;
        LED_WHITE_UNSET;

(größere Dateien bitte als Anhang)

von Jan H. (janiiix3)


Lesenswert?

Das bringt mich nicht weiter.
Die anderen Ausgänge funktionieren doch. Die #defines sind alles OK.

von 32F030 (Gast)


Lesenswert?

Jan H. schrieb:
> Das bringt mich nicht weiter.
> Die anderen Ausgänge funktionieren doch. Die #defines sind alles OK.

Wenn Du meinst. Ich bin nicht der super-duper STM32-Experte, wollte Dir 
aber helfen und stelle die Fragen, die ich stellen würde, wäre es mein 
Programm.

Aber Du willst nicht, ist schon ok. Dann bin ich halt raus.

von Jan H. (janiiix3)


Lesenswert?

Sorry, sollte nicht so rüberkommen.

Nur leider bringen mich deine Vorschläge nicht weiter, da habe ich schon 
mind. 10 x drauf geschaut. Es muss mit sicherheit noch irgendwas 
umprogrammiert werden...

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Hast Du einen Brotbrett-Aufbau?
Bitte Schaltplan und Foto vom Aufbau. :D

RM0360 v3 7.2.1
Caution: To switch ON the HSE oscillator, 512 HSE clock pulses need to 
be seen by an internal stabilization counter after the HSEON bit is set. 
Even in the case that no crystal or Resonator is connected to the 
device, excessive external noise on the OSC_IN pin may still lead the
oscillator to start. Once the oscillator is started, it needs another 6 
HSE clock pulses to complete a switching OFF sequence. If for any reason 
the oscillations are no more present on the OSC_IN pin, the oscillator 
cannot be switched OFF, locking the OSC pins from any other use and 
introducing unwanted power consumption. To avoid such situation, it is
strongly recommended to always enable the Clock Security System (CSS) 
which is able to switch OFF the oscillator even in this case.

von Jan H. (janiiix3)


Lesenswert?

Das heißt jetzt? Nein, habe schon ne fertige Platine.

von Adib (Gast)


Lesenswert?

Jan H. schrieb:
> Das heißt jetzt? Nein, habe schon ne fertige Platine.

Hast du schon mal mit CubeMX das ganze probiert.
Das erstellt den init Code für die Pins.

Hth, Adib.
--

von Adib (Gast)


Angehängte Dateien:

Lesenswert?

anbei das Keil Projekt mit CubeMX erzeugt.
Vergleiche mal bitte.
Hast du die Clocksource richtig konfiguriert?
Sonst schaltet er denn externen Oszillator an und die Pins sind blokiert 
...
oder so.

Grüße, Adib.
--

von Jan H. (janiiix3)


Lesenswert?

Kannst du vielleicht mal eine  .hex Datei erzeugen in die der PF0 im 
Sekundentakt getoggelt wird? Dann bügel ich die mal drauf und versuche 
ob es so klappt...

von Adib (Gast)


Angehängte Dateien:

Lesenswert?

sollte GPIOF0 im sekundentakt zappeln lassen ...
  while (1)
  {
    HAL_GPIO_TogglePin(GPIOF, 1);
    HAL_Delay(1000);
  /* USER CODE END WHILE */

Adib.
--

von Marlon W. (Gast)


Lesenswert?

Klappt!
Wo ist da der Unterschied zu meinem?
Was genau ist "HAL"?

von Jan H. (janiiix3)


Lesenswert?

Ohje, was ist da passiert. Falscher Name.
Es klappt aufjedenfall mit deiner Software. Was ist denn nun der 
Unterschied zwischen deinem Code und meinem? Was genau ist "HAL"? Ein 
Standart?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Hardware Abstraction Layer

Ein Stück Software, das die Bits in den Peripherieregistern richtig 
ansteuert und Du nur die Funktionen aufrufen musst, unter 
Berücksichtigung der Errata-Bugs vom µC.

von 32F030 (Gast)


Lesenswert?

Jan H. schrieb:
> Es klappt aufjedenfall mit deiner Software.

Adib schrieb:
> Hast du die Clocksource richtig konfiguriert?
> Sonst schaltet er denn externen Oszillator an und die Pins sind blokiert

Deshalb solltest Du Deine komplette Software zeigen ...

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Mit der Benutzung einer HAL erspart man sich zum Teil das detaillierte 
Einlesen in die Bits des µC. Dafür muss man sich die die HAL einlesen 
g

HAL's gibt es von ST, per CubeMX. Auch andere Anbieter wie Keil, Segger 
oder Opensource.

von pegel (Gast)


Lesenswert?

Wo bleibt W.S. ? ;-)

von Jan H. (janiiix3)


Lesenswert?

Ich benutzte aktuell EmBitz habe damit angefangen.
Alle anderen GPIO´s verhalten sich so wie ich das möchte, nur eben diese 
beiden nicht (GPIOF 0&1).

von Jan H. (janiiix3)


Lesenswert?

Adib schrieb:
> anbei das Keil Projekt mit CubeMX erzeugt.
> Vergleiche mal bitte.
> Hast du die Clocksource richtig konfiguriert?
> Sonst schaltet er denn externen Oszillator an und die Pins sind blokiert
> ...
> oder so.
>
> Grüße, Adib.
> --

Vielen dank für deinen Denkanstoß.
Nun funktioniert es ;)

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.