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 | }
|