Forum: Mikrocontroller und Digitale Elektronik [S] Standart includes für STM32 AC6 mit HAL


von ennen (Gast)


Lesenswert?

Hallo da.

Bin gerade etwas am eingewöhnen mit der "STM AC6" IDE.
Hier werden nun ja auch die HAL-Treiber verwendet, die ich bisher nie 
nutzte.

Mein kleines Blinky-Progrämmchen, das in Coocox wunderbar lief, tut hier 
natürlich einfach mal nichts ausser Fehler verursachen ;)

Im Coocox Projekt hat mein main.c so angefangen:
1
#include "stm32f0xx.h"
2
#include "stm32f0xx_gpio.h"
3
#include "stm32f0xx_rcc.h"
4
5
int main(void)
6
{
7
  GPIO_InitTypeDef GPIO_InitStructure;
8
9
  SystemInit();
10
11
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);     //Port C (GPIOC)
12
13
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_9 | GPIO_Pin_8;   //Add as many pins as you want
14
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       //Max speed
15
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;         //Configure for Output
16
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;         //Output type: Push-Pull
17
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;       //No pull-up or pull-down
18
19
  GPIO_Init(GPIOC, &GPIO_InitStructure);            //Sets the above options on port C (GPIOC)

Kann mir jemand auf die Sprünge helfen wie die mit den HAL-Treiber 
aussehen sollte?

Leider finde ich die HAL-Funktionen auch irgendwie im Projektbau nicht 
wieder.
Sind aber bei Projekterstellung definitiv angehakt gewesen.

Danke im Voraus

von hp-freund (Gast)


Lesenswert?

Moin,

es kommt erst einmal darauf an ob Du die HAL Lib überhaupt nutzen 
möchtest.
Für den F0 kannst Du auch weiterhin die SPL verwenden. Das wird bei der 
Projekterstellung ausgewählt und bei Bedarf heruntergeladen.

Wenn Du die HAL nutzen willst, dann ist STM32CubeMX zum erstellen eines 
Projekts die erste Wahl da AC6 nur ein leeres Projekt erstellt.

von hp-freund (Gast)


Lesenswert?

Nachtrag:
wenn  Du die Einstellungen bei der Projekterstellung ausser zur Auswahl 
der HAL oder SPL nicht änderst wird ein weiteres Projekt zur Erstellung 
einer static library angelegt und mit deinem verknüpft.
Da drin sind dann alle nötigen Dateien.

von ennen (Gast)


Lesenswert?

Aaaah, wenn man die HAL-Treiber anklickt aber den Haken bei "add low 
level drivers in the project" raus macht, werden die auch nicht ins 
Projekt eingeklinkt.
Ich dachte, das würde nur für lwip usw gelten...

CubeMX schaue ich mir mal die Tage an.



Ich finde leider mit HAL nicht den richtigen Befehl für den GPIO clock 
anzuwerfen.
Bei CMSIS war das ja: "RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, 
ENABLE);".

Kann mir jemand da einen Tip geben wie es bei HAL heißen muss?

von ennen (Gast)


Lesenswert?

...also für das Bit im Register RCC->AHBENR->IOPCEN an zu schalten.
Ausser jetzt direkt bit 19 zu verodern.
Dank HAL müsste es das ja auch in leserlich geben.

von hp-freund (Gast)


Angehängte Dateien:

Lesenswert?

ennen schrieb:
> Bei CMSIS war das ja: "RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,
> ENABLE);".
>
> Kann mir jemand da einen Tip geben wie es bei HAL heißen muss?

1
__GPIOC_CLK_ENABLE();
wird aufgerufen in:
1
MX_GPIO_Init();
diese wird aufgerufen von:
1
main()

Das Einfachste ist wirklich CubeMX zu verwenden und die erzeugten 
Dateien in das AC6 Projekt zu kopieren (alte überschreiben).

Also z.B. in AC6 ein neues C Projekt für das Nucleo030 Board erstellen 
und dann ein CubeMX Projekt für das Nucleo030 Board auch ein Projekt 
erstellen.
Die von CubeMX erstellten Dateien aus Inc/Src in das AC6 Projekt inc/src 
kopieren.

Im Anhang zum probieren deinen Code aus dem ersten Beitrag als HAL.

von ennen (Gast)


Lesenswert?

Aaah, hier steht es :)

__GPIOD_CLK_ENABLE(); verweist auf __HAL_RCC_GPIOD_CLK_ENABLE()

Okay, das ist geklärt.

...die discovery.h kann ich mir aber nicht geben.
Da ist zu viel Ardui*-Beigeschmack dabei :D
Und wem sollte das was nützen, wenn man eine eigene Hardware nutzt.
Dann steht man wieder im Wald, da ein LED1_Clock_Enable() nicht tut...

von hp-freund (Gast)


Lesenswert?

Hab das jetzt zwei Mal gelesen, aber ????

von ennen (Gast)


Lesenswert?

was genau hattest Du nicht verstanden?
Über, oder unter dem "Okay, das ist geklärt."

von hp-freund (Gast)


Lesenswert?

Unter dem.

Was hat dein Board mit discovery, ardui* und sonstigen zu tun?

Für deins machst Du einfach eine eigene Konfiguration und fertig.
Das geht für AC6 wie auch für CubeMX...

von ennen (Gast)


Lesenswert?

Derzeit habe ich ein F0 Discovery-Board angeschlossen.
Hier gibt es eine Ardui*-Like Discovery.h .
Diese werde ich sicher jetzt beim Umstieg nicht verwenden, da man sonst 
mit dem eigenen Board wieder im Wald steht.

CubeMX werde ich natürlich verwenden.

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.