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

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.