STM32F4 Systick und Klassen

OP #3408619
Lesenswert?

Hallo Zusammen,

ich möchte gerne in der Systick die Funktion CountTime meiner Klasse 
aufrufen. Doch leider wird die Zeit nicht hochgezählt. Die Systick habe 
ich schon auf Funktion überprüft indem ich eine LED blinken lasse. Rufe 
ich CountTime in der Main auf so wird die Zeit hochgezählt. Was habe ich 
da Falsch gemacht?

Vielen Dank.
Gruß

Time.cpp:
1
#include "Time.h"
2
#include "LCD.h"
3
#include <stdio.h>
4

5

6
class_time::class_time()
7
{
8
  hundert = 0;
9
  sekunde = 0;
10
  minute = 0;
11
  lcd_write_line( 8, "Konstruktor start!");
12
}
13

14
class_time::~class_time()
15
{
16
  lcd_write_line( 8, "Destruktor start!");
17
}
18

19
void class_time::ShowTime()
20
{
21
  sprintf(timebuffer, "%d", hundert);
22
  lcd_write_line( 3, timebuffer);
23
  sprintf(timebuffer, "%d", sekunde);
24
  lcd_write_line( 4, timebuffer);
25
  sprintf(timebuffer, "%d", minute);
26
  lcd_write_line( 5, timebuffer);
27
}
28

29
void class_time::CountTime()
30
{
31
  hundert++;
32
  if(hundert == 100)
33
  {
34
    sekunde++;
35
    hundert = 0;
36
    if(sekunde == 60)
37
    {
38
      minute++;
39
      sekunde = 0;
40
      if(minute == 60)
41
      {
42
        minute = 0;
43
      }
44
    }
45
  }
46
}

Time.h:
1
#ifndef TIME_H_
2
#define TIME_H_
3

4
class class_time
5
{
6
   public:
7
      class_time(); //Konstruktor
8

9
    char timebuffer[20];
10
    volatile int hundert;
11
    volatile int sekunde;
12
    volatile int minute;
13

14
    void ShowTime();
15
    void CountTime();
16

17
    virtual ~class_time(); //Destruktor
18

19
   private:
20
      //blank
21

22
};
23
#endif /* TIME_H_ */

Systick.cpp:
1
#include "Time.h"
2

3
class_time A;
4

5
extern "C" void xPortSysTickHandler(void)
6
{
7
  
8
    A.CountTime();
9
}

Main.cpp:
1
#include "Systick.h"
2
#include "Time.h"
3
#include "LCD.h"
4
#include <stdio.h>
5

6
int main(void)
7
{
8
  SysTick_init();
9
  lcd_init();
10

11
  class_time A;
12

13
  while (1)
14
  {
15
      //A.CountTime();
16
      A.ShowTime();
17
  }
18
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren