STM32L152 LED zum leuchten bringen will einfach nicht.

OP (Firma: asd) #4983105
Lesenswert?

Hallo an Alle,

ich habe mir vor geraumer Zeit das STM32L152 - Discovery Board gekauft.

Ich bin was µC angeht ein Anfänger. Ich habe mir einige Beispiele 
angeschaut und auch soweit verstanden. So dachte ich es. Ich verwende 
die KEIL  Umgebung und die STDPeriph_Lib. Es gibt auch hier im Forum 
schon dieses Thema, aber leider hat mir das nicht weiter geholfen. Mein 
Code ist sehr simple und sieht folgendermaßen aus.

int main (void)

{

  GPIO_InitTypeDef GPIO_InitStructure;



  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NoPull;
  GPIO_Init(GPIOB, &GPIO_InitStructure);


  while (1)
  {

  GPIO_SetBits(GPIOB,GPIO_Pin_7);


  }
}

Dadurch sollte theoretisch die grüne LED dauerhaft leuchten, da diese an 
PortB Pin 7 hängt.

In jedem Forum führt dieser Code oder so ähnlich bei jedem zum Erfolg 
außer bei mir. Ich habe mir auch die Beispiele von STM runtergeladen, da 
habe ich auch irgendwie kein Erfolg. Nur das Beispiel, dass ich mit der 
Keil Umgebung als Beispiel runterladen kann funktioniert. Das Projekt 
heißt Blinky und lässt beide Leds abwechselnd blinken. Da ist der Code 
aber sehr umfangreich.

Hat jemand eine Idee was ich falsch mache? Der Compiler spuckt keine 
Fehler aus und das Flashen scheint auch zu funktionieren, nur es rührt 
sich einfach nichts.
Würde mich über jede Hilfe freuen.
Ich weiß einfach nicht was ich falsch mache.

Schöne Grüße.
OP (Firma: asd) #4983261
Lesenswert?

Hi Leute,

Danke für den Tipp mit CubeMx, jetzt geht es tatsächlich :)


Jetzt habe ich aber eine andere Frage, ich kann jetzt nicht mehr auf die 
Funktionen zugreifen also Bsp: GPIO_SetBits() ,sondern muss das per ,ich 
glaube das nennt man Bitmanipuilation, machen also: GPIOB->BRR = 
GPIO_PIN_7; Wenn ich die Datei stm32l1xx.h hinzufüge, dann fehlt widerum 
eine andere Datei und das Projekt lässt sich nicht mehr erstellen. In 
welcher Datei befinden sich denn diese Funktionen genau? Also die 
Funktionen zum Bsp. Auslesen, Setzen und Löschen der Bits.

Danke nochmal für Eure Hilfe.

Gruß

Rab.
Gast #4983330
Lesenswert?

Hi

Ich hatte für den STM32L0 ein ähnliches Blink Programm geschrieben und 
hier dokumentiert:
https://drolliblog.wordpress.com/2017/04/06/led-blink-with-the-stm32l031x6/


> Wenn ich die Datei stm32l1xx.h hinzufüge, dann fehlt widerum...

Ich habe einen ähnlichen Ansatz verfolgt. Welche Dateien noch fehlen und 
woher man diese kopieren kann, habe ich ebenfalls im oben referenzierten 
Artikel dokumentiert.

Grüße,
Oliver
OP (Firma: asd) #4983708
Lesenswert?

Hi,

ok das Handbuch hilft mir um einiges weiter. Vielen Dank.

Jetzt bin ich wirklich um einiges weiter gekommen und die Leds leuchten 
und der Syntax mit HAL_GPIO_WritePIN... funktioniert auch.

Aber jedesmal wenn ich denke ich hab endlich alles verstanden um richtig 
loszulegen, dann kommt mir was anderes in die Quere.

Nur eine Frage: ist diese Logik zum Togglen der Leds so richtig?
Weil es funktioniert nicht, er bleibt immer nur in der ersten Bedingung 
hängen. Wenn also a als false initialisiert wird bleibt der in der false 
bedingung und die LEDs leuchten dauerhaft oder wenn eben false dann 
bleiben die LEDs aus.

Warum Togglen die nicht?

bool a;

  while (1)
  {


if (a == true)

{
  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET);

  a = false;
}

else if
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET);
a = true;
}

Danke an alle. Ihr seid echt super.

Schöne Grüße.

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