Probleme mit statischen Methoden/Membern + IRQ_Handler

OP #3958886
Lesenswert?
• ▲
▼
Hallo,

ich habe heute versucht auf meinem STM32F4 Board eine statische 
Klassenmethode in einer Timer-Interrupt-Routine aufzurufen.
Leider schaffe ich es einfach nicht, das es Fehlerfrei übersetzt wird 
bzw. wenn es ohne Fehlermeldungen übersetzt wird startet der Debuger 
nicht mehr.


Ich möchte gerne 3 ADC-Werte auslesen und diese in einem geschützten 
(private) Bereich der Klasse ablegen. Die IRQ-Handler befinden sich in 
einer anderen Quelldatei
1
#ifndef CONTROL_H_INCLUDED
2
#define CONTROL_H_INCLUDED
3

4

5
//SPL laden
6
#include "stm32f4xx_conf.h"
7
//#include "globale.h"
8

9
//uint16_t CAnalogConvert::ADC1_Val;
10

11

12
namespace myNamespace
13
{
14

15

16
class CAnalogConvert
17
{
18
private:
19
    static uint16_t ADC1_Val;
20
    static uint16_t ADC2_Val;
21
    static uint16_t ADC3_Val;
22

23
public:
24
    static void updateADC(void)
25
    {
26
        ADC1_Val = ADC_GetConversionValue(ADC1);
27
    }
28

29
};
30

31
uint16_t CAnalogConvert::ADC1_Val = 1;
32
uint16_t CAnalogConvert::ADC2_Val = 1;
33
uint16_t CAnalogConvert::ADC3_Val = 1;
34

35
}//end namespace ibg
36

37

38

39
#endif /* CONTROL_H_INCLUDED */

1
extern "C" void TIM6_DAC_IRQHandler(void)
2
{
3
    TIM_ClearITPendingBit(TIM6,TIM_IT_Update);
4

5
    myNamespace::CAnalogConvert::updateADC();
6

7
    //Test
8
    GPIO_ToggleBits(GPIOD, GPIO_Pin_13);
9

10
}


Kann das sein, das man im Interrupt vielleicht nicht auf C++ Elemente 
zugreifen kann da ja EXTERN "C" ??

Danke schon mal.

Gruß
OP #3958912
Lesenswert?
• ▲
▼
||warning: command line option '-std=c99' is valid for C/ObjC but not for C++ 
[enabled by default]|
||warning: command line option '-std=c99' is valid for C/ObjC but not for C++ 
[enabled by default]|
src\InterruptHandlers.cpp||In function 'void TIM6_DAC_IRQHandler()':|
src\InterruptHandlers.cpp|50|error: 'myNamespace' has not been declared|
||=== Build finished: 1 errors, 2 warnings (0 minutes, 0 seconds) ===|


Wenn ich die Header-Datei in welcher ich die Klasse angelegt habe mit 
einbinde in die InterruptHandler.c Datei, kommen keine Fehler mehr aber 
ich kann das Programm nicht mehr laden/Debugen. Scheint also auch was 
faul zu sein.

Ich muss gleich zugeben, das ich mit statischen Methoden und 
Membervariablen zuvor noch nie was programmiert habe und daher nicht so 
sehr viel Ahnung habe.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.