STR912FAW44 GPIO

OP #1372797
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
}
Gast
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.
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.
OP
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
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.