Forum: Mikrocontroller und Digitale Elektronik STR912FAW44 GPIO


von Hans D. (herschdorfer)


Lesenswert?

Hallo,

ich bi ganz neu in der ARM Programmierung und wollte bei dem STR912 auf 
einem selbstgebauten Board einfach mal eine LED leuchten lassen..

Jedoch blicke ich bei dem Wirrwar aus KEIL und ST Programmbeispielen 
nicht durch.

ich arbeite mit uVision und will nur den port 7.0 einfach mal auf High 
schalten.

Hier mein bisheriger CODE...

leider andert sich an PIN5 nix...
1
  
2
#include <91x_lib.h> 
3
#include <91x_gpio.h>
4
5
6
void LedShow_Init(void);
7
void LedShow(FunctionalState NewState);
8
9
bool LedShowStatus = FALSE;
10
GPIO_InitTypeDef GPIO_InitStructure;
11
12
int main(void)
13
{
14
  while (1){
15
    LedShow_Init();
16
    LedShow(ENABLE);
17
  }
18
19
}
20
21
 void LedShow_Init(void)
22
{
23
24
  GPIO_StructInit(&GPIO_InitStructure);
25
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
26
  GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
27
  GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
28
  GPIO_Init(GPIO7, &GPIO_InitStructure);
29
}
30
31
32
void LedShow(FunctionalState NewState)
33
{
34
  if(NewState == ENABLE)
35
  {
36
    LedShowStatus = TRUE;
37
  }
38
  else
39
  {
40
    LedShowStatus = FALSE;
41
  }
42
}

von Andre Pilz (Gast)


Lesenswert?

Ich hab hier ein ähnliches Problem, ein Olimex-Board mit diesem Chip, 
Anfänger in der ARM-Entwicklung und kein OOTB-Beispiel, woran man mal 
tatsächlich sehen kann, wie das alles funktioniert. Aber scheinbar 
fehlen mir einfach noch ein paar Grundlagen.

Als nächstes versuch ich es mal mit "Building Bare-Metal ARM Systems 
with GNU" (Artikelserie, siehe Google, ist hier auch verlinkt), wenn 
aber jemand zeigen könnte, in welche Richtung ich mich bewegen sollte, 
wäre das klasse.

von (prx) A. K. (prx)


Lesenswert?

Es könnte sich lohnen, den Takt für den GPIO-Port einzuschalten.

von (prx) A. K. (prx)


Lesenswert?

Der Code oben versucht zwar, den Port zu konfigurieren, aber wo wird der 
Pin geschaltet? Gesetzt wird nur die Statusvariable. Zudem ergibt die 
Portinitialisierung in der Schleife keinen Sinn, sowas gehört davor.

Mit einem ARM9 anzufangen kann ein ziemlich frustrierender Weg sein. Bei 
einfacher gestalteten Tierchen (z.B. 8-Bit-Klasse oder MSP430) kommt das 
Erfolgserlebnis deutlich früher.

von Hans D. (herschdorfer)


Lesenswert?

ich kenn mich mit anderen Prozessoren aus, zb. atmega 8 und ein paar 
DSP's, aber bei dem ARM verzweifle ich wirklich...

was meint ihr mit Takt einschalten...

ja, das stimmt die initalisierung hab ich auch schon davor gesetzt.

wie schalte ich den Pin ein? welcher befehl ist das?

MfG
Herschdorfer

von (prx) A. K. (prx)


Lesenswert?

Thomas Leber schrieb:

> was meint ihr mit Takt einschalten...

Es gibt in der Referenz ein ganzes Kapitel über Strom, Takt und Reset. 
Da könntest du mal einen Blick reinwerfen.

Und nachdem die ST-Libs ungefähr nach den Kapiteln der jeweiligen 
Referenz sortiert sind, dürfte es in der Lib auch was dazu geben. 
Folglich findet man die Taktkontrolle für eine Peripherieeinheit 
passenderweise nicht bei der Peripherieeinheit, sondern ganz woanders 
zentral für alle.

Ist bei neueren AVRs auch nicht viel anders, nur hat Atmel die Takte ab 
Reset freigeschaltet, so dass es etliche Anwender auch nach Jahren noch 
nicht gemerkt haben dürften. Bei ST merkt man es gleich.

von Gast (Gast)


Angehängte Dateien:

Lesenswert?

anbei ein Beispiel.

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.