Forum: Compiler & IDEs storage size of 'stepper1' isn't known


von Das wüsstet ihr G. (critical_brain_error)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe eine Bibliothek selbstgeschrieben um den 28BYJ-48-Schrittmotor 
an einem STM32F072B-Discoveryboard
zu betreiben.
Hier der Code der Header-Datei:
1
#include "stm32f0xx_hal.h"
2
struct stepper;
3
void stepper_init(struct stepper stepper0, GPIO_TypeDef* IN1_GPIO_Base_Number, uint16_t IN1_GPIO_Number, GPIO_TypeDef *IN2_GPIO_Base_Number, uint16_t IN2_GPIO_Number, GPIO_TypeDef* IN3_GPIO_Base_Number, uint16_t IN3_GPIO_Number, GPIO_TypeDef* IN4_GPIO_Base_Number, uint16_t IN4_GPIO_Number);
4
void stepper_set_step(struct stepper stepper0,int step);

Hier der Code der Quelldatei(.c)
1
#include <stepper_new.h>
2
//Emulates a stepper in the software
3
struct stepper
4
{
5
    uint16_t IN1;
6
    GPIO_TypeDef* IN1_Base;
7
    uint16_t IN2;
8
    GPIO_TypeDef*IN2_Base;
9
    uint16_t IN3;
10
    GPIO_TypeDef* IN3_Base;
11
    uint16_t IN4;
12
    GPIO_TypeDef* IN4_Base;
13
    int step_count;
14
};
15
void stepper_init(struct stepper stepper0, GPIO_TypeDef* IN1_GPIO_Base_Number, uint16_t IN1_GPIO_Number, GPIO_TypeDef *IN2_GPIO_Base_Number, uint16_t IN2_GPIO_Number, GPIO_TypeDef* IN3_GPIO_Base_Number, uint16_t IN3_GPIO_Number, GPIO_TypeDef* IN4_GPIO_Base_Number, uint16_t IN4_GPIO_Number)
16
{
17
    stepper0.IN1_Base=IN1_GPIO_Base_Number;
18
    stepper0.IN1=IN1_GPIO_Number;
19
    stepper0.IN2_Base=IN2_GPIO_Base_Number;
20
    stepper0.IN2=IN2_GPIO_Number;
21
    stepper0.IN3_Base=IN3_GPIO_Base_Number;
22
    stepper0.IN3=IN3_GPIO_Number;
23
    stepper0.IN4_Base=IN4_GPIO_Base_Number;
24
    stepper0.IN4=IN4_GPIO_Number;
25
}
26
void stepper_set_step(struct stepper stepper0,int step)
27
{   
28
   
29
    switch (step)
30
    {
31
    case 0:
32
        HAL_GPIO_WritePin(stepper0.IN1_Base,stepper0.IN1,1);
33
        HAL_GPIO_WritePin(stepper0.IN2_Base,stepper0.IN2,0);
34
        HAL_GPIO_WritePin(stepper0.IN3_Base,stepper0.IN3,0);
35
        HAL_GPIO_WritePin(stepper0.IN4_Base,stepper0.IN4,0);
36
        break;
37
    case 1:
38
        HAL_GPIO_WritePin(stepper0.IN1_Base,stepper0.IN1,1);
39
        HAL_GPIO_WritePin(stepper0.IN2_Base,stepper0.IN2,1);
40
        HAL_GPIO_WritePin(stepper0.IN3_Base,stepper0.IN3,0);
41
        HAL_GPIO_WritePin(stepper0.IN4_Base,stepper0.IN4,0);
42
        break;
43
    case 2:
44
        HAL_GPIO_WritePin(stepper0.IN1_Base,stepper0.IN1,0);
45
        HAL_GPIO_WritePin(stepper0.IN2_Base,stepper0.IN2,1);
46
        HAL_GPIO_WritePin(stepper0.IN3_Base,stepper0.IN3,0);
47
        HAL_GPIO_WritePin(stepper0.IN4_Base,stepper0.IN4,0);
48
        break;
49
    case 3:
50
        HAL_GPIO_WritePin(stepper0.IN1_Base,stepper0.IN1,0);
51
        HAL_GPIO_WritePin(stepper0.IN2_Base,stepper0.IN2,1);
52
        HAL_GPIO_WritePin(stepper0.IN3_Base,stepper0.IN3,1);
53
        HAL_GPIO_WritePin(stepper0.IN4_Base,stepper0.IN4,0);
54
        break;
55
    case 4:
56
        HAL_GPIO_WritePin(stepper0.IN1_Base,stepper0.IN1,0);
57
        HAL_GPIO_WritePin(stepper0.IN2_Base,stepper0.IN2,0);
58
        HAL_GPIO_WritePin(stepper0.IN3_Base,stepper0.IN3,1);
59
        HAL_GPIO_WritePin(stepper0.IN4_Base,stepper0.IN4,0);
60
        break;
61
    case 5:
62
        HAL_GPIO_WritePin(stepper0.IN1_Base,stepper0.IN1,0);
63
        HAL_GPIO_WritePin(stepper0.IN2_Base,stepper0.IN2,0);
64
        HAL_GPIO_WritePin(stepper0.IN3_Base,stepper0.IN3,1);
65
        HAL_GPIO_WritePin(stepper0.IN4_Base,stepper0.IN4,1);
66
        break;
67
    case 6:
68
        HAL_GPIO_WritePin(stepper0.IN1_Base,stepper0.IN1,0);
69
        HAL_GPIO_WritePin(stepper0.IN2_Base,stepper0.IN2,0);
70
        HAL_GPIO_WritePin(stepper0.IN3_Base,stepper0.IN3,0);
71
        HAL_GPIO_WritePin(stepper0.IN4_Base,stepper0.IN4,1);
72
        break;
73
    case 7:
74
        HAL_GPIO_WritePin(stepper0.IN1_Base,stepper0.IN1,1);
75
        HAL_GPIO_WritePin(stepper0.IN2_Base,stepper0.IN2,0);
76
        HAL_GPIO_WritePin(stepper0.IN3_Base,stepper0.IN3,1);
77
        HAL_GPIO_WritePin(stepper0.IN4_Base,stepper0.IN4,1);
78
        break;
79
    default:
80
        break;
81
    }
82
}

Diese Software habe ich folgendermaßen im Code implementiert:

In der main.h:
1
/* USER CODE BEGIN Header */
2
/**
3
  ******************************************************************************
4
  * @file           : main.h
5
  * @brief          : Header for main.c file.
6
  *                   This file contains the common defines of the application.
7
  ******************************************************************************
8
  * @attention
9
  *
10
  * Copyright (c) 2022 STMicroelectronics.
11
  * All rights reserved.
12
  *
13
  * This software is licensed under terms that can be found in the LICENSE file
14
  * in the root directory of this software component.
15
  * If no LICENSE file comes with this software, it is provided AS-IS.
16
  *
17
  ******************************************************************************
18
  */
19
/* USER CODE END Header */
20
21
/* Define to prevent recursive inclusion -------------------------------------*/
22
#ifndef __MAIN_H
23
#define __MAIN_H
24
25
#ifdef __cplusplus
26
extern "C" {
27
#endif
28
29
/* Includes ------------------------------------------------------------------*/
30
#include "stm32f0xx_hal.h"
31
32
/* Private includes ----------------------------------------------------------*/
33
/* USER CODE BEGIN Includes */
34
#include "stepper_new.h"
35
#include "lre_stepper.h"
36
/* USER CODE END Includes */
37
38
/* Exported types ------------------------------------------------------------*/
39
/* USER CODE BEGIN ET */
40
struct stepper stepper1; //ACHTUNG!  HIER EREIGNET SICH DER FEHLER!
41
/* USER CODE END ET */
42
43
/* Exported constants --------------------------------------------------------*/
44
/* USER CODE BEGIN EC */
45
46
/* USER CODE END EC */
47
48
/* Exported macro ------------------------------------------------------------*/
49
/* USER CODE BEGIN EM */
50
51
/* USER CODE END EM */
52
53
/* Exported functions prototypes ---------------------------------------------*/
54
void Error_Handler(void);
55
56
/* USER CODE BEGIN EFP */
57
58
/* USER CODE END EFP */
59
60
/* Private defines -----------------------------------------------------------*/
61
#define B1_Pin GPIO_PIN_0
62
#define B1_GPIO_Port GPIOA
63
#define LD3_Pin GPIO_PIN_6
64
#define LD3_GPIO_Port GPIOC
65
#define LD6_Pin GPIO_PIN_7
66
#define LD6_GPIO_Port GPIOC
67
#define LD4_Pin GPIO_PIN_8
68
#define LD4_GPIO_Port GPIOC
69
#define LD5_Pin GPIO_PIN_9
70
#define LD5_GPIO_Port GPIOC
71
/* USER CODE BEGIN Private defines */
72
73
/* USER CODE END Private defines */
74
75
#ifdef __cplusplus
76
}
77
#endif
78
79
#endif /* __MAIN_H */
In der stm32f0xx_it.c ist noch mit Folgendem implementiert:
1
void TIM3_IRQHandler(void)
2
{
3
  /* USER CODE BEGIN TIM3_IRQn 0 */
4
5
  /* USER CODE END TIM3_IRQn 0 */
6
  HAL_TIM_IRQHandler(&htim3);
7
  /* USER CODE BEGIN TIM3_IRQn 1 */
8
  stepper_set_step(stepper1,i);
9
  i++;
10
  if (i>7)
11
  {
12
    i=0;
13
  }
14
  if (i<0)
15
  {
16
    i=7;
17
  }
18
  
19
  /* USER CODE END TIM3_IRQn 1 */
20
}
Jetzt meckert aber der PlatformIO-Compiler wie folgt:
1
> Executing task: C:\Users\Max\.platformio\penv\Scripts\platformio.exe run <
2
3
Processing disco_f072rb (platform: ststm32; board: disco_f072rb; framework: stm32cube)
4
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
5
CONFIGURATION: https://docs.platformio.org/page/boards/ststm32/disco_f072rb.html 
6
PLATFORM: ST STM32 (15.2.0) > ST Discovery F072RB
7
HARDWARE: STM32F072RBT6 48MHz, 16KB RAM, 128KB Flash
8
DEBUG: Current (stlink) On-board (stlink) External (blackmagic, cmsis-dap, jlink)
9
PACKAGES:
10
 - framework-stm32cubef0 1.11.3
11
 - tool-ldscripts-ststm32 0.2.0
12
 - toolchain-gccarmnoneeabi 1.70201.0 (7.2.1)
13
LDF Modes: Finder ~ chain, Compatibility ~ soft
14
Found 18 compatible libraries
15
Scanning dependencies...
16
No dependencies
17
Building in debug mode
18
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal.o
19
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_adc.o
20
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_adc_ex.o
21
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_can.o
22
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_cec.o
23
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_comp.o
24
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_cortex.o
25
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_crc.o
26
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_crc_ex.o
27
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_dac.o
28
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_dac_ex.o
29
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_dma.o
30
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_exti.o
31
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_flash.o
32
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_flash_ex.o
33
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_gpio.o
34
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_i2c.o
35
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_i2c_ex.o
36
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_i2s.o
37
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_irda.o
38
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_iwdg.o
39
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_pcd.o
40
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_pcd_ex.o
41
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_pwr.o
42
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_pwr_ex.o
43
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_rcc.o
44
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_rcc_ex.o
45
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_rtc.o
46
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_rtc_ex.o
47
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_smartcard.o
48
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_smartcard_ex.o
49
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_smbus.o
50
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_spi.o
51
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_spi_ex.o
52
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_tim.o
53
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_tim_ex.o
54
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_tsc.o
55
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_uart.o
56
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_uart_ex.o
57
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_usart.o
58
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_usart_ex.o
59
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_hal_wwdg.o
60
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_adc.o
61
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_comp.o
62
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_crc.o
63
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_crs.o
64
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_dac.o
65
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_dma.o
66
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_exti.o
67
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_gpio.o
68
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_i2c.o
69
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_pwr.o
70
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_rcc.o
71
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_rtc.o
72
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_spi.o
73
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_tim.o
74
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_usart.o
75
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_usb.o
76
Compiling .pio\build\disco_f072rb\FrameworkHALDriver\Src\stm32f0xx_ll_utils.o
77
Compiling .pio\build\disco_f072rb\src\lre_stepper.o
78
Compiling .pio\build\disco_f072rb\src\main.o
79
In file included from Src\main.c:20:0:
80
Inc/main.h:40:16: error: storage size of 'stepper1' isn't known
81
 struct stepper stepper1;
82
                ^~~~~~~~
83
*** [.pio\build\disco_f072rb\src\main.o] Error 1
84
========================================================================================= [FAILED] Took 9.54 seconds =========================================================================================The terminal process "C:\Users\Max\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1.
85
86
Terminal will be reused by tasks, press any key to close it.

Vielleicht habe ich zu Viel Code eingefügt aber ich hoffe alle Infos 
gegeben zu haben.
Kann jemand der sich mit so was auskennt helfen den Fehler zu beheben?

Max

von Oliver S. (oliverso)


Lesenswert?

Interessante Aufteilung…

Eigentlich müsste es doch schon hier knallen:
1
void stepper_set_step(struct stepper stepper0,int step);

Definitionen gehören in Header-Dateien, Deklarationen nicht. Und erst 
ein struct definieren, dann benutzen.

Oliver

von Das wüsstet ihr G. (critical_brain_error)


Lesenswert?

Oliver S. schrieb:
> Eigentlich müsste es doch schon hier knallen:void
> stepper_set_step(struct stepper stepper0,int step);
>
> Definitionen gehören in Header-Dateien, Deklarationen nicht. Und erst
> ein struct definieren, dann benutzen.

Genau.
In der Funktionsdefinition wird die stepper-struct ja definiert(1. Eine 
struct vom Typ stepper erstellt,mit dem Namen stepper0;Danach wird 
stepper0 im Code verwendet.).

von A. S. (Gast)


Lesenswert?

Du willst den Struct ganz bestimmt nicht übergeben. Sondern eine 
Referenz darauf, gerne als Const. Dann geht das alles.

Also
1
struct stepper;
2
void stepper_init(struct stepper *pStepper0, 
3
   GPIO_TypeDef* IN1_GPIO_Base_Number, uint16_t IN1_GPIO_Number, 
4
   GPIO_TypeDef *IN2_GPIO_Base_Number, uint16_t IN2_GPIO_Number, 
5
   GPIO_TypeDef* IN3_GPIO_Base_Number, uint16_t IN3_GPIO_Number, 
6
   GPIO_TypeDef* IN4_GPIO_Base_Number, uint16_t IN4_GPIO_Number);
7
void stepper_set_step(struct stepper *pStepper0,int step);

von Rolf M. (rmagnus)


Lesenswert?

Das wüsstet ihr G. schrieb:
> struct stepper stepper1; //ACHTUNG!  HIER EREIGNET SICH DER FEHLER!

Woher soll der Compiler denn wissen, wie ein struct stepper aussieht? 
Das ist ja an der Stelle überhaupt nicht definiert.

von Das wüsstet ihr G. (critical_brain_error)


Lesenswert?

Das wüsstet ihr G. schrieb:
> In der stm32f0xx_it.c ist noch mit Folgendem implementiert:
1
void 
2
> TIM3_IRQHandler(void)
3
> {
4
>   /* USER CODE BEGIN TIM3_IRQn 0 */
5
>   /* USER CODE END TIM3_IRQn 0 */
6
>   HAL_TIM_IRQHandler(&htim3);
7
>   /* USER CODE BEGIN TIM3_IRQn 1 */
8
>   stepper_set_step(stepper1,i); //Hier ist ein zweiter Fehler aufgetaucht.
9
>   i++;
10
>   if (i>7)
11
>   {
12
>     i=0;
13
>   }
14
>   if (i<0)
15
>   {
16
>     i=7;
17
>   }
18
> 
19
>   /* USER CODE END TIM3_IRQn 1 */
20
> }

Hmm... Ein zweiter Fehler ist nach erneutem Compilieren aufgetreten.
Nämlich 'stepper1' has an incomplete type 'struct stepper'.

von Das wüsstet ihr G. (critical_brain_error)


Lesenswert?

Rolf M. schrieb:
> Das wüsstet ihr G. schrieb:
>> struct stepper stepper1; //ACHTUNG!  HIER EREIGNET SICH DER FEHLER!
>
> Woher soll der Compiler denn wissen, wie ein struct stepper aussieht?
> Das ist ja an der Stelle überhaupt nicht definiert.

Ich denke durch die Headerdatei.
Wenn ich falsch denke korrigiere mich, ich bin neu in C.

von Oliver S. (oliverso)


Lesenswert?

Das wüsstet ihr G. schrieb:
> Ein zweiter Fehler

Das ist das gleiche Problem wie oben, nur anders formuliert.

Oliver

von Dirk B. (dirkb2)


Lesenswert?

Rolf M. schrieb:
> Das wüsstet ihr G. schrieb:
>> struct stepper stepper1; //ACHTUNG!  HIER EREIGNET SICH DER FEHLER!
>
> Woher soll der Compiler denn wissen, wie ein struct stepper aussieht?
> Das ist ja an der Stelle überhaupt nicht definiert.

Und eine Variable sollte in einem Header auch nicht definiert werden.
Nur deklariert - und dann gehört ein extern davor.

von Oliver S. (oliverso)


Lesenswert?

Das hier ist die Deklaration des struct stepper:
> struct stepper
> {
>     uint16_t IN1;
>     GPIO_TypeDef* IN1_Base;
>     uint16_t IN2;
>     GPIO_TypeDef*IN2_Base;
>     uint16_t IN3;
>     GPIO_TypeDef* IN3_Base;
>     uint16_t IN4;
>     GPIO_TypeDef* IN4_Base;
>     int step_count;
> };

Die gehört in die headerdatei, ganz nach oben.
Die headerdatei musst du dann in jede .c-Datei einbinden, die struct 
stepper benutzt.

Oliver

von Rolf M. (rmagnus)


Lesenswert?

Das wüsstet ihr G. schrieb:
> Rolf M. schrieb:
>> Das wüsstet ihr G. schrieb:
>>> struct stepper stepper1; //ACHTUNG!  HIER EREIGNET SICH DER FEHLER!
>>
>> Woher soll der Compiler denn wissen, wie ein struct stepper aussieht?
>> Das ist ja an der Stelle überhaupt nicht definiert.
>
> Ich denke durch die Headerdatei.

Die Definition der Struktur steht aber nicht in der Headerdatei, sondern 
in der .c-Datei:

Das wüsstet ihr G. schrieb:
> Hier der Code der Quelldatei(.c)
> #include <stepper_new.h>
> //Emulates a stepper in the software
> struct stepper
> {
>     uint16_t IN1;
>     GPIO_TypeDef* IN1_Base;
>     uint16_t IN2;
>     GPIO_TypeDef*IN2_Base;
>     uint16_t IN3;
>     GPIO_TypeDef* IN3_Base;
>     uint16_t IN4;
>     GPIO_TypeDef* IN4_Base;
>     int step_count;

> Wenn ich falsch denke korrigiere mich, ich bin neu in C.

Dass in den Header nur die Deklaration kommt und die Definition in die 
.c-Datei, gilt nur für Variablen und Funktionen, aber nicht für die 
Datentypen.

von A. S. (Gast)


Lesenswert?

Das wüsstet ihr G. schrieb:
> Wenn ich falsch denke korrigiere mich, ich bin neu in C.

Du hast das eigentliche Problem noch gar nicht verstanden:

Du willst NICHT die Struktur übergeben SONDERN den Pointer darauf.

Das erfordert Änderungen an Deinem Code. Im wesentlichen nur stumpfes 
ersetzen, z.B. x.y wird zu x->y und (x) wird zu (&x).

Du musst Dich jedoch damit befassen, sonst gehen die Fragen erst los, 
wenn Dein Code compiliert und (nicht) läuft.

von Oliver S. (oliverso)


Lesenswert?

A. S. schrieb:
> Das wüsstet ihr G. schrieb:
>> Wenn ich falsch denke korrigiere mich, ich bin neu in C.
>
> Du hast das eigentliche Problem noch gar nicht verstanden:

Doch, hat er. "ich bin neu in C" ist die vollumfängliche 
Problembeschreibung, nur sehr freundlich formuliert.

C-Buch...

Oliver

von Das wüsstet ihr G. (critical_brain_error)


Lesenswert?

Oliver S. schrieb:
> Doch, hat er. "ich bin neu in C" ist die vollumfängliche
> Problembeschreibung, nur sehr freundlich formuliert.
>
> C-Buch...
>
> Oliver

☺ Ja so kann man es auch nehmen, auf jedenfall vielen Dank an  A. S., 
für seine Detailbeschreibung wie man den Code ändert.

Wenn ich den Code geändert habe werde ich bescheidgeben ob er 
funktioniert oder nicht.

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.