[S] Standart includes für STM32 AC6 mit HAL

Gast #4326393
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
Gast #4326400
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.
Gast #4326401
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.
Gast #4327609
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?
Gast #4327638
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.
Angehängte Dateien:
Gast #4327957
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...
Gast #4328208
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.

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