1 | // ConsoleApplication1.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
|
2 | //
|
3 |
|
4 | #include "inttypes.h"
|
5 |
|
6 | typedef void(*fnPtr)(void);
|
7 |
|
8 | volatile
|
9 | struct
|
10 | {
|
11 | uint8_t u8CntFct;
|
12 | // void(*apfct[8]) (void);
|
13 | fnPtr apfct[8];
|
14 | //---------------------------------------------------------------------------------------------------------------------------
|
15 | uint32_t u32TickMs;
|
16 | uint32_t u32TickSec;
|
17 | //-- Statistik ----------------------------------------------------------------------------------------------------------------------------------
|
18 | }
|
19 | scEsc_SysTick;
|
20 |
|
21 | void
|
22 | stm32_time_addfct_1ms(fnPtr pfct)
|
23 | {
|
24 | //-- Eingangsvariablen prüfen -------------------------------------------------------------------------------------------------------------------
|
25 | uint8_t u8Cnt = scEsc_SysTick.u8CntFct;
|
26 | uint8_t u8Max = (uint8_t)(sizeof(scEsc_SysTick.apfct)
|
27 | / sizeof(scEsc_SysTick.apfct[0]));
|
28 | if (u8Cnt >= u8Max) return;
|
29 |
|
30 | //-- abspeichern --------------------------------------------------------------------------------------------------------------------------------
|
31 | scEsc_SysTick.apfct[u8Cnt] = pfct;
|
32 | scEsc_SysTick.u8CntFct++;
|
33 |
|
34 | //-----------------------------------------------------------------------------------------------------------------------------------------------
|
35 | return;
|
36 | }
|
37 |
|
38 |
|
39 | void myFunc(void)
|
40 | {
|
41 | static int x;
|
42 | x++;
|
43 | }
|
44 |
|
45 | int main()
|
46 | {
|
47 | stm32_time_addfct_1ms(&myFunc);
|
48 |
|
49 | //-- UserFunktion aufrufen ----------------------------------------------------------------------------------------------------------------------
|
50 | uint8_t u8Idx = 0;
|
51 | //uint8_t u8Max = (uint8_t)(sizeof(scEsc_SysTick.apfct) / sizeof(scEsc_SysTick.apfct[0]));
|
52 | uint8_t u8Max = scEsc_SysTick.u8CntFct;
|
53 |
|
54 | while (u8Idx < u8Max)
|
55 | {
|
56 | fnPtr pfct = scEsc_SysTick.apfct[u8Idx++];
|
57 | if (pfct != 0)
|
58 | {
|
59 | (*pfct) ();
|
60 | }
|
61 | }
|
62 |
|
63 | return 0;
|
64 | }
|