Forum: Mikrocontroller und Digitale Elektronik STM32F303 HAL Layer kompletten Port einlesen


von Wolfram L. (amazon)


Lesenswert?

Hallo,
gibt es eine HAL Funktion zum einlesen eines kompletten 16Bit Ports ?
HAL_GPIO_ReadPin(GPIOx, GPIO_Pin) gibts und toggle bits usw. aber ich 
will einen kompletten Port einlesen können, statt 8 oder 16 * ReadPin..
Hab ich was übersehen ? ..

von pegel (Gast)


Lesenswert?

Ich denke, Du hast jetzt eine gute Gelegenheit das mysteriöse und viel 
geschmähte HAL zu erforschen.

Schau dir die Definition von HAL_GPIO_ReadPin an, da findest Du den 
einfachen Registerzugriff: GPIOx->IDR.

Der Rest ist HAL Luxus.

von m.n. (Gast)


Lesenswert?

pegel schrieb:
> Ich denke, Du hast jetzt eine gute Gelegenheit das mysteriöse und viel
> geschmähte HAL zu erforschen.

Ein Blick ins "Reference Manual" bietet meines Erachtens die besseren 
Informationen. HAL hat sich danach erledigt.

von Chris (Gast)


Lesenswert?

uint32_t HAL_GPIO_ReadPort(GPIO_TypeDef *GPIOx)
{
  return GPIOx->IDR;
}

von Stefan F. (Gast)


Lesenswert?

Das kommt dann dabei heraus, wenn Leute von Anfang an mit 
Abstraktions-Layern lernen. Sie vergessen, dass man einfache Sachen 
einfach machen kann.

Ich habe gerade einen Knubbel Papier vor mir liegen. Jetzt vereinbare 
ich mal einen Termin mit der örtlichen Müllabfuhr, dass die hier her 
kommen und mit den Knubbel vom Tisch holen.

Da frage ich mich: Wofür ist eigentlich der Blaue Eimer in der Ecke 
jedes Bürozimmers und wer macht die leer?

von Wolfram L. (amazon)


Lesenswert?

Stefan, ich arbeite und programmiere seit vielen Jahren/Jahrzehnten mit 
C und Microcontrollern. Nein ich fange nicht mit Abstraction Layer an. 
Ich untersuche nur die Möglichkeiten und Limits des HAL—Layers von ST. 
Das der HAL Layer für manche verpönt ist kann ich verstehen, aber wenn 
man sich solche Technologien nicht anschaut, würden wir immer noch CPUs 
mit Assembler programmieren und Smartphone Apps würde es nicht geben.
Ihre Arroganz ist in diesem Forum fehl am Platz.

von Stefan F. (Gast)


Lesenswert?

Wolfram L. schrieb:
> aber wenn
> man sich solche Technologien nicht anschaut, würden wir immer noch CPUs
> mit Assembler programmieren und Smartphone Apps würde es nicht geben.

Ja, das ist wohl so.

von Vincent H. (vinci)


Lesenswert?

1
#define GPIO_PIN_0                 ((uint16_t)0x0001)  /* Pin 0 selected    */
2
#define GPIO_PIN_1                 ((uint16_t)0x0002)  /* Pin 1 selected    */
3
#define GPIO_PIN_2                 ((uint16_t)0x0004)  /* Pin 2 selected    */
4
#define GPIO_PIN_3                 ((uint16_t)0x0008)  /* Pin 3 selected    */
5
#define GPIO_PIN_4                 ((uint16_t)0x0010)  /* Pin 4 selected    */
6
#define GPIO_PIN_5                 ((uint16_t)0x0020)  /* Pin 5 selected    */
7
#define GPIO_PIN_6                 ((uint16_t)0x0040)  /* Pin 6 selected    */
8
#define GPIO_PIN_7                 ((uint16_t)0x0080)  /* Pin 7 selected    */
9
#define GPIO_PIN_8                 ((uint16_t)0x0100)  /* Pin 8 selected    */
10
#define GPIO_PIN_9                 ((uint16_t)0x0200)  /* Pin 9 selected    */
11
#define GPIO_PIN_10                ((uint16_t)0x0400)  /* Pin 10 selected   */
12
#define GPIO_PIN_11                ((uint16_t)0x0800)  /* Pin 11 selected   */
13
#define GPIO_PIN_12                ((uint16_t)0x1000)  /* Pin 12 selected   */
14
#define GPIO_PIN_13                ((uint16_t)0x2000)  /* Pin 13 selected   */
15
#define GPIO_PIN_14                ((uint16_t)0x4000)  /* Pin 14 selected   */
16
#define GPIO_PIN_15                ((uint16_t)0x8000)  /* Pin 15 selected   */
17
#define GPIO_PIN_All               ((uint16_t)0xFFFF)  /* All pins selected */

Das letzte #define kann man der ReadPin Funktion geben um alle Pins 
einzulesen.

/edit
Code ist copy/paste aus den ST GPIO Headern.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Wolfram L. schrieb:
> Stefan, ich arbeite und programmiere seit vielen Jahren/Jahrzehnten mit
> C und Microcontrollern.

Dann wundert mich ein wenig, warum Du diese Frage gestellt hast.

von temp (Gast)


Lesenswert?

Wolfram L. schrieb:
> Das der HAL Layer für manche verpönt ist kann ich verstehen, aber wenn
> man sich solche Technologien nicht anschaut, würden wir immer noch CPUs
> mit Assembler programmieren und Smartphone Apps würde es nicht geben.
> Ihre Arroganz ist in diesem Forum fehl am Platz.

Naja, den HAL Layer von ST als Technologie zu bezeichnen ist wohl etwas 
weit hergeholt. Mittlerweile haben die Studenten bei ST schon die 3. 
Inkarnation dieses Mists verbrochen. Was sich aber nicht geändert hat 
ist das Referenzmanual wo jedes Register schön beschrieben steht. Und um 
die komplexeren Hardwareblöcke zu verstehen reicht es auch nicht die 
HAL-Funktionen mal gesehen zu haben, da ist sowieso Studium des 
Referenzmanuals angesagt. Oder, wie viele hier mit den einfachsten 
Fragen aufzuschlagen.

Wolfram L. schrieb:
> Stefan, ich arbeite und programmiere seit vielen Jahren/Jahrzehnten mit
> C und Microcontrollern.

Eins von beiden stimmt nicht, deine Ausgangsfrage oder diese Aussage 
hier. Sollte beides zutreffen, würde ich nicht mehr von Programieren 
sondern von Kopieren reden.

Wolfram L. schrieb:
> aber wenn
> man sich solche Technologien nicht anschaut, würden wir immer noch CPUs
> mit Assembler programmieren und Smartphone Apps würde es nicht geben.

Wir brauchen nicht mehr lange warten, dann stimmt die umgekehrte 
Aussage: Mittlerweile werden selbst einfache Programme nur noch aus 
unzähligen Libs aus dem Netz zusammen kopiert über die niemand mehr die 
Kontrolle hat. Hauptsache es geht für den Moment und das schnell. Aber 
eine wirkliche Stabilität und Sicherheit in die Programme zu kriegen, 
wird mit jedem Jahr und aufgeblähteren Code schlechter.

von Simon (Gast)


Lesenswert?

> Das letzte #define kann man der ReadPin Funktion geben um alle Pins
> einzulesen.

Wenn du dir den Code anschaust, merkst du dass das nicht so einfach 
geht:

es wird lediglich GPIO_PIN_SET=1 als returnwert zurückgegeben

von erklehr behr (Gast)


Lesenswert?

HAL-Layer:
--->  SPI Interface
--->  LCD Display (Anzeige)
--->  weisser Schimmel

etc.

von STK500-Besitzer (Gast)


Lesenswert?

Simon schrieb:
> Wenn du dir den Code anschaust, merkst du dass das nicht so einfach
> geht:

Und wenn du dir das Datum des letzten Beitrag anschaust, stelltst du 
fest, dass das Thema seit über einem Jahr niemanden mehr interessiert.

von W.S. (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> Und wenn du dir das Datum des letzten Beitrag anschaust, stelltst du
> fest, dass das Thema seit über einem Jahr niemanden mehr interessiert.

Nun ja, ob es jemanden interessiert oder nicht, ist dem Controller 
ziemlich egal. Er funktioniert halt eben nicht, wenn man es nicht 
richtig macht. Und das auch in diesem Jahr.
Siehe da:

Beitrag "STM32, Verstrichene Zeit mittels SysTick ermitteln, wie Overflow/Rollover berücksichtigen?"

Ist wieder mal ein grandioses Beispiel für HAL-Programmierer, gelle?

W.S.

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.